1597:Uniform Generator
概要
線形合同法の係数と種が与えられたとき、全ての数が表れるかどうかを判定する問題。
gcd使って簡単にO(1)で求まりそうな気もするけどシミュレーションで間に合うので愚直に試した。
int main(){ int st, mod, cur, i; char good[] = "Good Choice", bad[] = "Bad Choice"; bool occurred[100000]; while(scanf("%d%d",&st,&mod)!=EOF){ REP(i,100000) occurred[i] = false; for(cur=0;!occurred[cur];occurred[cur]=true,cur = (cur+st)%mod); printf("%10d%10d %s\n\n",st,mod,count(occurred,occurred+mod,true)==mod?good:bad); } return 0; }