解题思路:
1.递归,当开始循环时退出。
2.判断,得到的数字,是不是从0到mod-1。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100000
int main()
{
int step,mod;
while(~scanf("%d %d",&step,&mod))
{
int nm[mod],f[MAX],flag=0,i;
memset(nm,0,sizeof(nm));
f[0]=0;
nm[0]=1;
for(i=1;;i++)
{
f[i]=(f[i-1]+step)%mod;
if(!nm[f[i]])nm[f[i]]=1;
else break;
}
for(i=0;i<mod;i++)
{
if(!nm[i])flag++;
}
printf("%10d",step);
printf("%10d",mod);
if(flag)printf(" Bad Choice\n\n");
else printf(" Good Choice\n\n");
}
}