抄别人的……
#include<iostream>
using namespace std;
char lock[16000000];
int main()
{
__int64 i,a,c,m,r0,temp;
while(scanf("%I64d%I64d%I64d%I64d",&a,&c,&m,&r0)!=EOF)
{
memset(lock,0,sizeof(lock));
temp=r0;
while(!lock[temp])
{
lock[temp]=1;
temp=(a*temp+c)%m;
}
int flag=0,max=0,j;
for(i=0;i<16000000;i++)
{
if(lock[i]&&flag)
{
if(j>max)
max=j;
j=1;
}
if(lock[i]&&flag==0)
{
flag=1; j=1;
}
if(lock[i]==0&&flag)
j++;
}
cout<<max<<endl;
}
return 0;
}