博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 350 Pseudo-Random Numbers
阅读量:6949 次
发布时间:2019-06-27

本文共 2487 字,大约阅读时间需要 8 分钟。

 

 Pseudo-Random Numbers 

Computers normally cannot generate really random numbers, but frequently are used to generate sequences of pseudo-random numbers. These are generated by some algorithm, but appear for all practical purposes to be really random. Random numbers are used in many applications, including simulation.

 

A common pseudo-random number generation technique is called the linear congruential method. If the last pseudo-random number generated was L, then the next number is generated by evaluating ( tex2html_wrap_inline32 , where Z is a constant multiplier, I is a constant increment, and M is a constant modulus. For example, suppose Z is 7, I is 5, and M is 12. If the first random number (usually called the seed) is 4, then we can determine the next few pseudo-random numbers are follows:

 

tabular21

 

As you can see, the sequence of pseudo-random numbers generated by this technique repeats after six numbers. It should be clear that the longest sequence that can be generated using this technique is limited by the modulus, M.

 

In this problem you will be given sets of values for Z, I, M, and the seed, L. Each of these will have no more than four digits. For each such set of values you are to determine the length of the cycle of pseudo-random numbers that will be generated. But be careful: the cycle might not begin with the seed!

 

Input

Each input line will contain four integer values, in order, for Z, I, M, and L. The last line will contain four zeroes, and marks the end of the input data. L will be less than M.

 

Output

For each input line, display the case number (they are sequentially numbered, starting with 1) and the length of the sequence of pseudo-random numbers before the sequence is repeated.

 

Sample Input

 

7 5 12 45173 3849 3279 15119111 5309 6000 12341079 2136 9999 12370 0 0 0

 

Sample Output

 

Case 1: 6Case 2: 546Case 3: 500Case 4: 220
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 using namespace std;15 int a[1000000]; 16 17 int main() 18 { 19 int Z,I,M,L,t=0; 20 while ( scanf("%d%d%d%d",&Z,&I,&M,&L)) 21 {22 t=t+1;23 if (Z*I*M*L==0)24 break; 25 memset(a,0,sizeof(a)); 26 int k=0; 27 L=(Z*L+I)%M; 28 while(!a[L]) 29 { 30 k=k+1; 31 a[L] = 1; 32 L = (Z*L+I)%M; 33 } 34 printf("Case %d: %d\n",t,k); 35 } 36 return 0; 37 }
View Code

转载地址:http://tthnl.baihongyu.com/

你可能感兴趣的文章
stl 之set图解
查看>>
4.自定义数据《jquery实战》
查看>>
HDU 3569 Imaginary Date 简单期望
查看>>
iOS开发之地域选择
查看>>
activity
查看>>
ROS+nfdump 用户上网日志
查看>>
CSDN日报20170411 ——《怎样给自己的私活项目标价》
查看>>
(转)背包9讲
查看>>
Linux_window与linux之间文件互传,上传下载
查看>>
GDB调试——常用的命令
查看>>
Disruptor多个消费者不重复处理生产者发送过来的消息
查看>>
vuejs_01项目启动
查看>>
[LeetCode] Candy Crush 糖果消消乐
查看>>
04.变量和常量
查看>>
图像采集调试总结
查看>>
iOS适配HTTPS,创建一个自签名的SSL证书(x509)具体步骤
查看>>
1111111
查看>>
XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法...
查看>>
弱符号与强符号,弱引用与强引用
查看>>
009PHP文件处理——文件处理 file_get_contents file_put_contents fgetc fgets fgetss
查看>>