原题:http://acm.hdu.edu.cn/showproblem.php?pid=1014
题意:
给出step, mod,然后根据公式产生随机数,初始数字都为0;
若在0到mod-1的范围内,每个数都只出现一次,则输出good choice,否则输出bad choice;
思路:
将产生的随机数都放到一个数组里,对数组进行排序,然后判断是否有出现相同的数字;
注意格式问题!
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int arr[100005];
int step, mod;
int main()
{
while(scanf("%d%d", &step, &mod)!=EOF)
{
arr[0] = 0;
int flag = 0;
for(int i = 1;i<mod;i++)
arr[i] = (arr[i-1]+step)%mod;
sort(arr, arr+mod);
for(int i = 1;i<mod;i++)
{
if(arr[i] == arr[i-1])
{
flag = 1;
break;
}
}
printf("%10d%10d ", step, mod);
if(flag)
printf("Bad Choice\n\n");
else
printf("Good Choice\n\n");
}
return 0;
}