#4749. 均匀生成器

均匀生成器

题目描述

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


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

     其中 "%" 是取模运算符。

这种函数将生成介于 0 和 MOD-1 之间的伪随机数(seed)。这种形式的函数的一个问题是,它们会不断重复相同的模式。为了尽量减少这种影响,仔细选择 STEP 和 MOD 的值可以实现 0 到 MOD-1 之间所有值的均匀分布。

例如,如果 STEP=3 且 MOD=5,该函数将生成 0、3、1、4、2 的伪随机数序列,然后重复。在这个例子中,每次函数迭代 MOD 次,0 到 MOD-1 之间的所有数字都将被生成。请注意,由于该函数的性质是每次 seed(x) 出现时都会生成相同的 seed(x+1),这意味着如果一个函数能够生成 0 到 MOD-1 之间的所有数字,那么它将在每次 MOD 次迭代中均匀地生成伪随机数。

如果 STEP = 15 且 MOD = 20,该函数将生成 0、15、10、5 的序列(或者如果初始 seed 不是 0,就会生成其他重复的序列)。这是一个 STEP 和 MOD 的选择不佳的例子,因为没有任何初始 seed 能够生成 0 到 MOD-1 之间的所有数字。

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

输入

第一行有一个正整数T(2<= T <= 100),表示有T组测试;

每行输入包含一对整数,分别表示 STEP 和 MOD 的值(1<=STEP,MOD<=100000)。

输出

对于每行输入,你的程序应在第 1 列至第 10 列右对齐打印 STEP 值,在第 11 列至第 20 列右对齐打印 MOD 值,并在第 25 列开始左对齐打印“Good Choice”或“Bad Choice”。当选择的 STEP 和 MOD 能够在生成 MOD 个数字时生成 0 到 MOD-1 之间的所有数字时,应打印“Good Choice”消息。否则,你的程序应打印“Bad Choice”消息。在每个输出测试集之后,你的程序应正好打印一个空行。

输入示例

3
3 5
15 20
63923 99999

输出示例

         3         5    Good Choice
 
        15        20    Bad Choice
 
     63923     99999    Good Choice