AOJ2149 Luck Manipulator

問題リンク Luck Manipulator

  • 解法

最大10000フレームまでシミュレートします。

  • ソース
import java.util.Scanner;

//Luck Manipulator
public class AOJ2149 {

	void run(){
		Scanner sc = new Scanner(System.in);
		for(;;){
			int n = sc.nextInt(), A = sc.nextInt(), B = sc.nextInt(), C = sc.nextInt(), X = sc.nextInt();
			if((n|A|B|C|X)==0)break;
			int[] y = new int[n];
			for(int i=0;i<n;i++)y[i]=sc.nextInt();
			int f = 0, k = 0, x = X;
			while(f<=10000){
				if(y[k]==x)k++;
				if(k==n)break;
				x = (A*x+B)%C;
				f++;
			}
			System.out.println(k==n?f:-1);
		}
	}
	
	public static void main(String[] args) {
		new AOJ2149().run();
	}
}