/*
Author:snowflake
Time:2012/5/13
Desc:Water...
*/
/*
题目的大意:就是给定两个数step, mod然后利用给定的公式求随机数,保证从0到mod减1范围内
每一个数都出现一次。这样就均等分布了。就打印Good否则就Bad
就是枚举产生随机数,然后排序在比对,注意下输出的格式就OK了。
*/
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAX 100000 + 10
int random[MAX];
int main()
{
int step, mod;
int i;
bool flag;
while(cin >> step >> mod)
{
flag = true;
random[0] = 0;
//第一个数字永远是0
for(i = 1; i <= mod - 1; i++)
{
random[i]= (random[i - 1] + step) % mod;
}
sort(random, random + mod);
for(i = 0; i < mod; i++)
{
if(random[i] != i)
flag = false;
}
if(flag)
printf("%10d%10d Good Choice\n\n",step, mod);
else
printf("%10d%10d Bad Choice\n\n",step, mod);
}
return 0;
}
hdu1014 Uniform Generator
最新推荐文章于 2019-02-26 21:30:00 发布