← 完整题目索引

PROJECT EULER · #0238

无限字符串之旅

Infinite String Tour

仅题目 · 已解决原题 ↗

使用"Blum Blum Shub"伪随机数生成器创建数字序列:

s0=14025256sn+1=sn2mod20300713

连接这些数字 s0s1s2 以创建无限长度的字符串 w
然后,w=14025256741014958470038053646

对于正整数k,如果w中不存在数字总和等于k的子串,则定义p(k)为零。如果 w 中至少存在一个子串,其数字总和等于 k,则定义 p(k)=z,其中 z 是最早的该子串的起始位置。

例如:

子字符串 1,14,1402,
各自的数字总和等于 1,5,7,
从位置 1 开始,因此 p(1)=p(5)=p(7)==1

子字符串 4,402,4025,
各自的数字总和等于 4,6,11,
从位置 2 开始,因此 p(4)=p(6)=p(11)==2

子字符串 02,0252,
各自的数字总和等于 2,9,
从位置 3 开始,因此 p(2)=p(9)==3

请注意,从位置 3 开始的子字符串 025 的数字总和等于 7,但有一个较早的子字符串(从位置 1 开始)的数字总和等于 7,因此 p(7)=1不是 3

我们可以验证,对于 0<k103p(k)=4742

p(k)0<k2×1015

题解待补充

这道题的题目已收录,解题思路、代码和答案将在后续补充。