解题报告:POJ1597

原题链接:POJ1597

解析:主要难在理解题意,题目问是否分布均匀,就是说随机数是否从0~mod-1都有,其中seed0是可以是任意值,但是我们可以证明seed并不影响结果,由基本模运算可以得到:

seed(i) = (seed(i-1) + step)%mod = (seed(i-2) + step + step)%mod = (seed(0) + i*step)%mod

错误报告:

  • 题意要求输出每组数据后输出一行空行,没注意到
  • 在第二十五行输出字母,25行与21行之间只有4个空格

代码示例:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
	long long step,mod;
	while(~scanf("%lld%lld",&step,&mod)){
		long long num[mod];
		for(int i = 1;i <= mod;i++)
			num[i-1] = ((i%mod)*(step%mod))%mod;
		sort(num,num+mod);
		bool flag = true;
		for(int i = 0;i < mod;i++){
			if(i == num[i])	continue;
			else{
				flag = false;
				break;
			}
		}
		printf("%10lld%10lld    ",step,mod);
		if(flag)	puts("Good Choice\n");
		else puts("Bad Choice\n");
	}
	return 0;
} 

 

posted @ 2018-08-29 15:08  Dr_Lo  阅读(61)  评论(0编辑  收藏  举报