首页 > ACM题库 > HDU-杭电 > hdu 4774 Random Number Generator待解决[解题报告]C++
2015
09-17

hdu 4774 Random Number Generator待解决[解题报告]C++

Random Number Generator

问题描述 :

  A random number generator (RNG) is a computational or physical device designed to generate a sequence of numbers or symbols that lack any pattern, i.e. appear random. Many of these have existed since ancient time, including dices, coin flipping, the shuffling of playing cards, and many other techniques. These methods depend on the measurement of some physical phenomenon which is expected to be random, and are still widely used today. On the other hand, deterministic computational algorithms were introduced into random number generation. Despite such algorithms’ ability to produce apparently random results, they are in fact determined by a shorter initial value, known as a seed or key. These algorithms are often called pseudorandom number generators. They can also be called RNG customarily, but actually differ with real RNG significantly.
  Now considering a simple RNG, whose algorithm has two positive integer parameters A, B and a prime parameter M (2 ≤ A, B < M ≤ 1018). To run the algorithm, a seed X0 (0 ≤ X0 < M) is required, and the algorithm produces a integer sequence Xn satisfying the condition Xn = (A × Xn – 1 + B) mod M for any positive integer n.
  An application implemented this algorithm. This application has another two parameters S (S ≤ M) and K (K ≤ 105), and will use this RNG in such a way. Firstly, the application generates the first K integers in the random sequence including the seed, and these numbers modulo S are stored in another number sequence D, i.e. Di = Xi mod S for any integer i in [0, K - 1]. Then, another random integer XK is produced, and the application chooses the ((XK mod K) + 1)-th number in sequence D, i.e. DXk mod K as its output C. If an output C (0 ≤ C < S) is observed in a certain run, and parameters A, B, M, S, K is known, your task is determining a possible X0 which leads to the output C.

输入:

  There are at most 200 test cases. Each test case is a single line containing six integers, A, B, M, S, K and C, seperated by space. The meaning of these numbers are described above.
  The input is ended by 0 0 0 0 0 0

输出:

  There are at most 200 test cases. Each test case is a single line containing six integers, A, B, M, S, K and C, seperated by space. The meaning of these numbers are described above.
  The input is ended by 0 0 0 0 0 0

样例输入:

2 2 97 5 3 2
2 2 97 5 3 3
0 0 0 0 0 0

样例输出:

2
8