水题,难度主要在读题,hash一下既可以。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100001
#define INDEXMIN 0
int judge[MAX];
bool isRondomAverage(int step,int mod);
int main()
{
int step=0,mod=0;
while(scanf("%d %d",&step,&mod)!=EOF)
{
bool result=isRondomAverage(step, mod);
printf("%10d%10d ", step, mod);
if(false == result)
{
printf("Bad Choice\n\n");
}
else
{
printf("Good Choice\n\n");
}
}
}
bool isRondomAverage(int step,int mod)
{
memset(judge,0,100001);
int seedInit=0;
judge[seedInit]=1;
int seedNext=seedInit;
for(int i=INDEXMIN;i<mod;i++)
{
seedNext=(seedNext+step)%mod;
judge[seedNext]=1;
}
bool result=true;
for(int i=INDEXMIN;i<mod;i++)
{
if( 1!=judge[i])
{
result=false;
}
}
return result;
}