300900: CF172B. Pseudorandom Sequence Period
Memory Limit:256 MB
Time Limit:2 S
Judge Style:Text Compare
Creator:
Submit:0
Solved:0
Description
Pseudorandom Sequence Period
题意翻译
最近,珂朵莉在学习`rand()`/`random()`,她觉得这个很有趣,所以决定自己弄一个伪随机序列。 珂朵莉自己的伪随机的生成机制。 ``` i=1 while true: x=(a*x+b)%m print(x) ``` 题目输入abmx,求伪随机数循环节的长度。 > 1. 样例I: > - 珂朵莉生成的数列为`4 2 10 2 10 2...`,循环节为`2 10`,长度为2 > 2. 样例II: > - 珂朵莉生成的数列为`0 3 4 1 0 3 4 1 0...`,循环节为`0 3 4 1`,长度为4 > 3. 样例III > - 珂朵莉生成的数列为`33 24 78 78 78...`,循环节为`78`,长度为1题目描述
Polycarpus has recently got interested in sequences of pseudorandom numbers. He learned that many programming languages generate such sequences in a similar way: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF172B/02c4eeecb957768b3b96e1481a979d6934aab656.png) (for $ i>=1 $ ). Here $ a $ , $ b $ , $ m $ are constants, fixed for the given realization of the pseudorandom numbers generator, $ r_{0} $ is the so-called $ randseed $ (this value can be set from the program using functions like RandSeed(r) or srand(n)), and ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF172B/99fd5677ca5c02520be7595d9b1eaf3e9972e601.png) denotes the operation of taking the remainder of division. For example, if $ a=2,b=6,m=12,r_{0}=11 $ , the generated sequence will be: $ 4,2,10,2,10,2,10,2,10,2,10,... $ . Polycarpus realized that any such sequence will sooner or later form a cycle, but the cycle may occur not in the beginning, so there exist a preperiod and a period. The example above shows a preperiod equal to 1 and a period equal to 2. Your task is to find the period of a sequence defined by the given values of $ a,b,m $ and $ r_{0} $ . Formally, you have to find such minimum positive integer $ t $ , for which exists such positive integer $ k $ , that for any $ i>=k $ : $ r_{i}=r_{i+t} $ .输入输出格式
输入格式
The single line of the input contains four integers $ a $ , $ b $ , $ m $ and $ r_{0} $ ( $ 1<=m<=10^{5},0<=a,b<=1000,0<=r_{0}<m $ ), separated by single spaces.
输出格式
Print a single integer — the period of the sequence.
输入输出样例
输入样例 #1
2 6 12 11
输出样例 #1
2
输入样例 #2
2 3 5 1
输出样例 #2
4
输入样例 #3
3 6 81 9
输出样例 #3
1