#P13403. [GCJ 2010 #3] De-RNG-ed

    ID: 13214 远端评测题 3000ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>2010数论扩展欧几里德算法分类讨论Google Code Jam

[GCJ 2010 #3] De-RNG-ed

Description

我想制作一个在线扑克网站。这样一个系统中非常重要的组件就是随机数生成器。它需要足够快且足够随机。以下是我想出的一个折中方案。我需要生成长度最多为 DD 的随机数。我的计划是选择一个素数 P10DP \leq 10^D。我还会选择非负整数 AABB。最后,我会选择一个整数种子 SS,满足 0SP10 \leq S \leq P-1

为了输出我的伪随机数序列,我会首先输出 SS,然后用如下公式计算 SS 的新值:

S:=(A×S+B)modPS := (A\times S + B) \bmod P

然后我会输出新的 SS 作为序列中的下一个数,并用同样的公式继续更新 SS。我可以重复这个过程任意多次。

你认为这是一个好的随机数生成器吗?你能写一个程序,给定由我的随机数生成器生成的连续 KK 个元素,输出该序列的下一个元素吗?

Input Format

输入的第一行包含测试用例数 TT。接下来有 TT 组测试数据。每组测试数据的第一行包含 DDKK。下一行包含由上述随机数生成器生成的连续 KK 个元素。

Output Format

对于每个测试用例,输出一行,格式为 "Case #xx: yy",其中 xx 是测试用例编号(从 1 开始),yy 是序列的下一个数。如果答案不唯一,则输出字符串 "I don't know."。

3
2 10
0 1 2 3 4 5 6 7 8 9
3 1
13
1 5
6 6 6 6 6
Case #1: 10
Case #2: I don't know.
Case #3: 6

Hint

数据范围

  • 1T1001 \leq T \leq 100
  • 1K101 \leq K \leq 10
  • KK 个整数是由上述类型的随机数生成器生成的连续元素。

小数据范围(4 分,测试点 1 - 可见)

  • 1D41 \leq D \leq 4

大数据范围(10 分,测试点 2 - 隐藏)

  • 1D61 \leq D \leq 6

由 ChatGPT 4.1 翻译