QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 128 MB 満点: 100

#3121. 生成随机数

統計

John von Neumann 在 1946 年提出了一种生成伪随机数序列的方法。他的想法被称为“中间平方”法(middle-square method),具体过程如下:我们选择一个初始值 $a_0$,其十进制表示长度最多为 $n$。然后将 $a_0$ 自乘,在前面补零直到得到长度为 $2 \times n$ 的十进制表示,并取中间的 $n$ 位数字作为 $a_i$。对于每个 $i > 0$,重复此过程以生成 $a_i$。在本题中,我们取 $n = 4$。

样例 1:$a_0=5555$,$a_0^2=30858025$,$a_1=8580$,...

样例 2:$a_0=1111$,$a_0^2=01234321$,$a_1=2343$,...

遗憾的是,这种随机数生成器效果并不理想。当使用某个初始值启动时,它并不能生成所有其他相同位数的数字。

你的任务是对于给定的初始值 $a_0$,计算该生成器会产生多少个不同的数字。

输入格式

输入包含多个测试用例。每个测试用例占一行,包含一个 $a_0$ ($0 < a_0 < 10000$)。数字可能会在前面补零,以确保每个数字恰好由 4 位组成。输入以一行包含 0 的数据结束。

输出格式

对于每个测试用例,输出一行,包含该随机数生成器从给定的初始值 $a_0$ 开始所产生的不同数值 $a_i$ 的个数。注意,$a_0$ 也应被计入。

样例

样例输入 1

5555
0815
6239
0

样例输出 1

32
17
111

说明

注意,第三个测试用例在所有可能的输入中产生的不同数值数量最多。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.