#include <iostream> #define LENGTH 500//找数字规律的数组的长度 using namespace std; int main() { int a = 0, b = 0, num = 0; int tmp[LENGTH];//用来找数字规律的数组 while (cin >> a >> b >> num) { if (a == 0 && b == 0 && num == 0) break; int ans, last, nlast, i; last = nlast = ans = 1; for ( i = 3; (i < LENGTH + 3) && (i <= num); ++i) { ans = (a*last + b * nlast) % 7; nlast = last; last = ans; tmp[i - 3] = ans;//保存数值用来分析 } if (num < LENGTH + 3){ cout << ans << endl;//比分析的最大长度小,直接输出 } else//分析数值规律 { int cir_len, j, n; for (cir_len = 1; cir_len < LENGTH / 2; cir_len++)//数字循环的长度 { for (n = 1; n < LENGTH / cir_len; n++)//假定数字循环长度为n { for ( j = 0; j < n; j++) { if (tmp[j] != tmp[n*cir_len + j]) break; } if (j < n) break; } if (n == LENGTH / cir_len) break; } cout << tmp[(num - 3) % cir_len] << endl; } } return 0; }
acm1005
最新推荐文章于 2022-10-31 09:57:59 发布
