problem 1278

  别想太多,暴力就能AC。不过要注意循环不一定从种子数据开始。(就算判重用循环做也可以过的。)

Accepted 1278 C++ 00:00.00 396K

#include<stdio.h>
#include
<string.h>
#include
<stdlib.h>
void solve(int Z,int I,int M,int  L)
{
    
char* check = (char*)malloc(M * sizeof(char
));
    memset(check,
0,M * sizeof(char
));
    
int cnt = 0
;
    
while(check[L] == 0
)
    {    
        check[L] 
= ++
cnt;
        L 
= (Z * L + I) %
 M;
    }
    printf(
"%d/n",cnt - check[L] + 1
);
    free(check);
}
int
 main()
{
#ifndef ONLINE_JUDGE
    freopen(
"1278.txt","r"
,stdin);
#endif

    
int  Z,I,M,L;
    
int t = 0
;
    
while(scanf("%d%d%d%d",&Z,&I,&M,&L) != EOF && !(Z == 0 && I == 0 && M == 0 && L == 0
))
    {
        printf(
"Case %d: ",++
t);
        solve(Z,I,M,L);
    }
#ifndef ONLINE_JUDGE
    fclose(stdin);
#endif

    
return 0 ;
}

你可能感兴趣的:(ZOJ,Problem)