UVa 350 - Pseudo-Random Numbers

Contents

  1. 1. Problem
  2. 2. Solution
  3. 3. Code

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
#include<stdio.h>
#define N 10000

int main()
{
int Z, I, L, M, Case = 1;
int num[N];//num 用來記數字出現的順序

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;
}