直接暴力即可- -
由于ZOJ再次无节操地隐去数据范围,我把HASH表的范围设在了100万。
时间:0毫秒。
下面是代码:
#include "stdio.h"
#include "string.h"
const int MAXN=1000054;
int vis[MAXN];
int main(){
int i,j,k,l,Z,L,I,M;
k=1;
while(1){
scanf("%d%d%d%d",&Z,&I,&M,&L);
if(!Z||!I||!M||!L)break;
i=1;
memset(vis,-1,sizeof(vis));
while(i<MAXN){
//printf("i=%d.\n",i);
if(vis[L]!=-1){
printf("Case %d: %d\n",k,i-vis[L]);
break;
}
vis[L]=i;
L=(Z*L+I)%M;
i++;
}
k++;
}
return 0;
}