uva 350 – pseudo-random numbers

Contents

Problem

題目網址
中文網址

Solution

記下每個數字出現的順序,只要出現重複的數字即開始循環。

Code

UVa 350
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

#define N 10000

int ()
{
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: %dn", Case++, count - num[L] + 1);
}

return 0;
}