Problem
題目網址
中文網址
Solution
記下每個數字出現的順序,只要出現重複的數字即開始循環。
Code
UVa 3501 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include<stdio.h> #define N 10000
int main() { int Z, I, L, M, Case = 1; int num[N];
while (scanf("%d%d%d%d", &Z, &I, &M, &L) && M) { int i, count = 0; for (i = 0; i < N; i++) num[i] = 0;
while (!num[L]) { num[L] = ++count; L = (Z*L + I) % M; }
printf("Case %d: %d\n", Case++, count - num[L] + 1); }
return 0; }
|