您的位置:首页 > 编程语言 > C语言/C++

UVa 350: Pseudo-Random Numbers

2013-07-26 16:11 344 查看
这题很简单,只要注意题目给的L并不一定是seed循环中的一个seed就可以了。

模拟就行。

代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;

int is_in[10000];
int main()
{
int Z,I,M,L;
int Case=0;
while(cin >> Z >> I >> M >> L && M!=0)
{
Case++;
memset(is_in,0,sizeof(is_in));
int count=0,l=L;
while(1)
{
l = ((Z*l)%M+I)%M;
if(is_in[l]==0)	is_in[l]=1;
else if(is_in[l]==1) break;
}
int start_seed=l;
do
{
l = ((Z*l)%M+I)%M;
count++;
}while(l!=start_seed);
cout << "Case " << Case << ": " << count << "\n";
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UVa c++ 简单数论题