题目:点击打开链接
分析:题目要求均匀产生随机数,有两种方法:1 对产生的数进行标记 2 要产生随机数STEP和MOD的最大公约数不能超过1
代码一:
#include<stdio.h>
#include<string.h>
int a1[100010];
int main()
{
int STEP,MOD;
while(~scanf("%d%d",&STEP,&MOD))
{
int i;
int k=0;
memset(a1,0,sizeof(a1));
for(i=1;i<=MOD-1;i++)
{
k=(k+STEP)%MOD;
if(a1[k])
break;
a1[k]++;
}
if(i!=MOD)
printf("%10d%10d Bad Choice\n",STEP,MOD);
else
printf("%10d%10d Good Choice\n",STEP,MOD);
printf("\n");
}
return 0;
}
代码二:
#include<stdio.h>
int main()
{
int s,m;
while(~scanf("%d%d",&s,&m))
{
int i,k=0;
for(i=1;i<=m;i++)
{
if(s%i==0&&m%i==0&i>1)
k=1;
}
if(k)
printf("%10d%10d Bad Choice\n",s,m);
else
printf("%10d%10d Good Choice\n",s,m);
printf("\n");
}
return 0;
}