题目很长,说是有一个计算随机数的公式函数,然后让你输入step和mod,问你输入的这两个数能否让随机数函数中出现0到mod-1中的所有数,如果可以,输出Good Choice,否则输出Bad。看似很复杂,但是读明白了就会发现,就是一道水题= =step和mod之间是%的关系,函数是递加的,所以只要step和mod的最大公约数是1,就是合适的选择。因为如果不是1的话,就会有一些情况无论循环几次都得不到。
然后,一个GCD判断一下,输出就可以了。还要注意下输出格式是每个数占10位,用%10d输出,最后再换个行,over~
以下代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int gcd(int m,int n)
{
int temp;
if(m<n)
{
temp=m;
m=n;
n=temp;
}
if (m%n==0)
{
return n;
}
else
{
return gcd(n,m%n);
}
}
int main()
{
int step,mod;
int a;
while(scanf("%d%d",&step,&mod)!=EOF)
{
a=gcd(step,mod);
if(a==1)
printf("%10d%10d Good Choice\n\n",step,mod);
else
printf("%10d%10d Bad Choice\n\n",step,mod);
}
return 0;
}