(HDU)1014 --Uniform Generator(统一随机数生成)

这个题目不难,关键是看懂英文:(判断两个数是否互质,而且注意输出的格式)

描述
计算机模拟通常需要随机数。生成伪随机数的一种方式是通过一定形式的函数:

seed(x + 1)= [seed(x)+ STEP]%MOD

其中''是模运算符。

这样的函数将生成在0和MOD-1之间的伪随机数(种子)。这种形式的作用的一个问题就是,它们将总是重复地生成相同的模式。

为了最小化这种影响,仔细选择STEP和MOD值,可以使得在0和MOD-1(包括这两者)之间的所有值的均匀分布。

例如,如果STEP = 3和MOD = 5,该函数将在重复周期中生成一系列伪随机数0,3,1,4,2。在该示例中,将在函数的每个MOD迭代中生成包括0和MOD-1之间的所有数字。注意,由于每次产生种子(x)时生成相同种子(x + 1)的函数的性质,意味着如果函数将生成在0和MOD-1之间的所有数字,则它将均匀地生成伪随机数与每个MOD迭代。

如果STEP = 15和MOD = 20,该函数生成系列0,15,10,5(或任何其他重复系列,如果初始种子不是0)。这是一个很差的STEP和MOD选择,因为没有初始种子将生成从0和MOD-1的所有数字。

您的程序将确定STEP和MOD的选择是否将生成伪随机数的均匀分布。


输入
每一行输入将按顺序包含一对用于STEP和MOD的整数(1 <= STEP,MOD <= 100000)。


输出
对于每一行输入,您的程序应在第1列至第10列右对齐输出STEP值,第11列至第20列右对齐的MOD值,以及从第25列左对齐输出“Good Choice”或“Bad Choice” 。当生成MOD号时,选择STEP和MOD将生成0和MOD-1之间的所有数字时,应输出“Good Choice”信息。否则,您的程序应输出信息“Bad Choice”。在每个输出测试集之后,程序应该输出一个空白行。


样例输入
3 5
15 20
63923 99999


样例输出
            3      5  Good Choice

          15   20   Bad Choice

     63923 99999   Good Choice
问题
 1 #include <iostream>
 2 #include <cstdio>
 3 
 4 using namespace std;
 5 
 6 int gcd(int a, int b)
 7 {
 8     return a%b?gcd(b,a%b):b;
 9 }
10 
11 int main ()
12 {
13     char tab[2][15] = {"Bad Choice", "Good Choice"} ;
14     int a, b ;
15     while (~scanf ("%d%d", &a, &b))
16     {
17         printf ("%10d%10d    %s\n\n", a, b, tab[gcd(a,b)==1]) ;
18     }
19     return 0 ;
20 }
精简代码

 

转载于:https://www.cnblogs.com/ACDoge/p/6123910.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值