题意:给出L,Z,I,M四个数,不断执行L=(L*Z+I)%M.最终L会循环,求周期
暴力模拟即可
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int random[10001];
int Z,I,M,L;
int counter=1;
while(cin>>Z>>I>>M>>L&&M)
{
memset(random,0,sizeof(random));
Z%=M;
I%=M;
L%=M;
int result=0;
L=(Z*L+I)%M;
while(!random[L])
{
result++;
random[L]=1;
L=(Z*L+I)%M;
}
cout<<"Case "<<counter++<<": "<<result<<endl;
}
return 0;
}
本文介绍了一个通过模拟算法来解决数学问题的方法。具体来说,是通过给定的四个整数L、Z、I、M,不断执行L=(L*Z+I)%M的操作直到出现循环,并求出该循环的周期长度。
322

被折叠的 条评论
为什么被折叠?



