CF172B.Pseudorandom Sequence Period

普及-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Polycarpus has recently got interested in sequences of pseudorandom numbers. He learned that many programming languages generate such sequences in a similar way: (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 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.

波利卡普斯最近对伪随机数序列产生了兴趣。他了解到,许多编程语言都以类似的方式生成此类序列:
(其中 i≥1i \geq 1)。
此处 aa、bb、mm 是常数,对给定的伪随机数生成器实现是固定的;r0r_0 称为 randseed(该值可通过类似 RandSeed(r) 或 srand(n) 的函数在程序中设置);而
表示取模运算(即除法的余数)。

例如,若 a=2a = 2,b=6b = 6,m=12m = 12,r0=11r_0 = 11,则生成的序列为:
4, 2, 10, 2, 10, 2, 10, 2, 10, 2, 10, …4,\ 2,\ 10,\ 2,\ 10,\ 2,\ 10,\ 2,\ 10,\ 2,\ 10,\ \ldots

波利卡普斯意识到,任何这样的序列迟早都会形成一个循环,但该循环未必从序列起始处开始,因此存在一个前周期(preperiod)和一个周期(period)。上述例子中前周期长度为 11,周期长度为 22。

你的任务是:对于给定的 aa、bb、mm 和 r0r_0 所定义的序列,求出其周期。
形式化地说,你需要找出最小的正整数 tt,使得存在某个正整数 kk,满足对任意 i≥ki \geq k,均有 ri=ri+tr_i = r_{i+t}。

输入格式

The single line of the input contains four integers a, b, m and _r_0 (1 ≤ m ≤ 105, 0 ≤ a, b ≤ 1000, 0 ≤ _r_0 < m), separated by single spaces.

输入仅包含一行,其中有四个整数 aa、bb、mm 和 r0r_0(1 ≤ m ≤ 1051 \leq m \leq 10^5,0 ≤ a, b ≤ 10000 \leq a, b \leq 1000,0 ≤ r0 < m0 \leq r_0 < m),以单个空格分隔。

输出格式

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

说明/提示

The first sample is described above.

In the second sample the sequence is (starting from the first element): 0, 3, 4, 1, 0, 3, 4, 1, 0, ...

In the third sample the sequence is (starting from the first element): 33, 24, 78, 78, 78, 78, ...

第一个样例如上所述。

第二个样例中,该序列(从第一个元素开始)为:0, 3, 4, 1, 0, 3, 4, 1, 0, ...

第三个样例中,该序列(从第一个元素开始)为:33, 24, 78, 78, 78, 78, ...

输入解题思路,AI测评打分。不知道怎么写?

首页