一直在做数学题,跳出来一道水模拟。。。
就是找循环节
#include"stdio.h" #include"string.h" #define N 100001 int n,m; int mark[N]; void fun() { int i; int ans; memset(mark,0,sizeof(mark)); ans=0; mark[0]=1; for(i=0;i<m;i++) { ans=(ans+n)%m; if(mark[ans]==1)break; mark[ans]=1; } for(i=0;i<m;i++) if(mark[i]!=1)break; if(i>=m)printf("%10d%10d%s\n",n,m," Good Choice"); else printf("%10d%10d%s\n",n,m," Bad Choice"); printf("\n"); } int main() { while(scanf("%d%d",&n,&m)!=-1) fun(); return 0; }