【发布时间】:2012-10-08 20:25:21
【问题描述】:
是否有可能在很大一部分数字中找到循环长度(超过 C/C++ 中最大整数类型的最大值,比如说 2^20),而不涉及磁盘来执行它?最好的情况是按顺序分析它们,因为它们来自标准输入,但我很确定这是不可能的,我需要将它们存储在内存中。但我希望我是错的。数字值是整数,它们来自标准输入。
示例: 输入: ( 1 2 3 ... (2^20 三倍的 1 2 3) ... 1 2 3) 期望结果:3
编辑
让我们将循环视为一个周期(f(x) = f(x+t) 对于某些 t) - 寻找 t 的值
假设操作内存太少,无法存储所有数字(数字可能超过 2^20)并且可能是 gmp 类型。
【问题讨论】:
-
ummmm...所以“循环”是指重复子字符串?
-
您可能需要解释为什么“3”是您的示例中所需的结果。为什么不是 1?
-
因为3是周期的长度,更正
-
我认为 2^20 不会溢出最大可能的整数类型。即使是标准的现成整数类型,它也几乎不会溢出。
-
@Kerrek SB 但可能会溢出例如可用内存
标签: c++