寻找不是开头的循环节
#include <stdio.h>int f[1010]= {0, 1, 1};int main(){int a, b;long long int n;while( ~scanf("%d%d%lld", &a, &b, &n) && a+b+n){for(int i=3; i<=n; i++) //两个循环先建立小的查找数组{f[i] = (a*f[i-1] + b*f[i-2]) %7;for(int j=2; j<i; j++){if(f[j-1] == f[i-1] && f[i] == f[j]) //开始寻找,注意不一定为开头{n = (n-j)%(i-j)+j; break;}}}printf("%d\n", f[n]);}return 0;}
附件列表

浙公网安备 33010602011771号