HDACM1005
此题关键在于找出循环节,循环节的最坏可能是49次一个循环(因为对于f[n-1] 或者 f[n-2] 的取值只有 0,1,2,3,4,5,6 这7个数,A,B又是固定的,所以就只有49种可能值了)。因为循环开始并不一定是 1 1 开始的所有,我们从第只要判断第i(i>5)项和第4项相等且i-1项和第3项相等说明找到了循环节。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int a =sc.nextInt();
int b =sc.nextInt();
int n = sc.nextInt();
if (n==0&&b==0&&a==0) {
break;
}
if (n<3) {
System.out.println("1");
continue;
}
int[] arr = new int[54];
arr[1]=1;
arr[2]=1;
int m=0;
int i = 3;
boolean boo = false;
for (; i < 54; i++) {
arr[i] = (arr[i-1]*a+arr[i-2]*b)%7;
if (i>5&&arr[i]==arr[4]&&arr[i-1]==arr[3]) {
m = i-4;
break;
}
}
System.out.println(arr[(n-3)%m+3]);
}
}
}