思路:直接判断循环的数量num是否与mod相等
#include<stdio.h> #include<string.h> int vis[100005]; int main(){ int step, mod, seed, num, flag; while (scanf("%d %d", &step, &mod) != EOF){ num = seed = 0,flag = 1; memset(vis, 0, sizeof(vis)); while (num < mod){ seed = (seed + step) % mod; num++; if (!vis[seed]) vis[seed] = 1; else{ flag = 0; break; } } if (flag) printf("%10d%10d%15s\n", step, mod, "Good Choice"); else printf("%10d%10d%14s\n", step, mod, "Bad Choice"); printf("\n"); } return 0; }