题意是说从 0 开始每次增加 STEP,然后模 MOD 得到一些数,问是否能得到从 0 到 MOD - 1 的所有数。
只要 STEP 与 MOD 互质就可以满足条件,也就是二者的最大公因数为 1 即可。
但是这道题对于输出的格式要求很高,少见的右对齐(自从发现 cin / cout 比 scanf / printf 慢很多就没再使用过 setw() )个人对 scanf 和 printf 的右对齐输出掌握的不好,所以输出调整格式显得很繁琐……
代码如下:

1 #include <bits/stdc++.h> 2 using namespace std; 3 int gcd(int a,int b) 4 { 5 return !b?a:gcd(b,a%b); 6 } 7 int main() 8 { 9 int step,mod; 10 while(~scanf("%d%d",&step,&mod)) 11 { 12 if(gcd(step,mod)==1) 13 { 14 printf("%*d",10,step); 15 printf("%*d Good Choice ",10,mod); 16 } 17 else 18 { 19 printf("%*d",10,step); 20 printf("%*d Bad Choice ",10,mod); 21 } 22 printf(" "); 23 } 24 return 0; 25 }