1014–伪随机数
要求:
- 随机输入STEP和MOD(最大至100000),seed(x+1) = [seed(x) + STEP] %MOD,若结果可取到从0至MOD-1,则good,反之则bad。
分析:
- seed(x+1) = [seed(x) + STEP] %MOD
- 当STEP和MOD的最大公约数等于1的时候,seed可以取到从0至MOD-1
- 问题转换成了判断两个大数的最大公约数是否为1
注意:
- 输出的对齐格式可以不写 因为要求的数字右对齐就是默认的对齐方式
- 字母从第25行开始 也就是中间有4个空格!!!!(我在这儿PE了三次哭)
————AC代码————
//AC
//1014
//seed(x+1) = [seed(x) + STEP] % MOD
//大数
#include <iostream>
#include <iomanip>
#include <sstream>
using namespace std;
long long gcd(long long a, long long b) {
long long da = a > b ? a : b;
long long xiao = a < b ? a : b;
if (da % xiao == 0)
return xiao;
else
return gcd(xiao, da % xiao);
}
int main() {
long long x, y;
while (cin >> x >> y)
if ( gcd(x, y) == 1) {
cout << setw(10) << x << setw(10) << y;
cout << " Good Choice" << endl << endl;
} else {
cout << setw(10) << x << setw(10) << y;
cout << " Bad Choice" << endl << endl;
}
return 0;
}
该博客内容涉及使用C++编程解决一个数学问题,即判断两个大整数(STEP和MOD)的最大公约数是否为1。如果两数互质,则程序输出'GoodChoice',表示它们可以生成0至MOD-1的全集;否则输出'BadChoice',表明不能。代码中定义了一个求最大公约数的gcd函数,并在主函数中进行读入数值和条件判断。

1305

被折叠的 条评论
为什么被折叠?



