题目大意:给出 step 和 mod,按照公式计算seed(x+1) = [seed(x) + STEP] % MOD
的值,如果一个周期内 seed(x) 出现 0~mod-1 的 mod 个值,那么就是 Good Choice,如果不到 mod 个值就开始循环,就是 Bad Choice。按照给定格式输出。
解题思路:记录下一个循环周期的个数,如果等于 mod 就是 Good Choice,否则 Bad Choice
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int step, mod;
int buf[100001];
while(cin>>step>>mod){
int cnt = 0; //cnt统计周期
for(int i=1;i<=mod;i++){ //默认buf[0]==0;
buf[i] = (buf[i-1]+step) % mod;
cnt++;
if(buf[i] == buf[0]) break;
}
if(cnt == mod){
cout<<setw(10)<<step<<setw(10)<<mod<<" "<<"Good Choice"<<endl;
}else{
cout<<setw(10)<<step<<setw(10)<<mod<<" "<<"Bad Choice"<<endl;
}
cout<<endl;
}
return 0;
}
网友评论