发现无穷多个数字之和的第一个出现

问题描述 投票:0回答:1

对于一个无穷大的数字,例如Pi,如何找到给定数字n首次出现的精确数字总和。

例如。如果n = 20

Pi = 3.14159265358979323846264338327950288419716939 ...

然后第一次出现是从数字1到数字5,因为:1 + 4 + 1 + 5 + 9 = 20

如果n = 30,则第一次出现是从数字5到数字11因为9 + 2 + 6 + 5 + 3 + 5 = 30

answer应该有一个有效的php演示

php math search numbers
1个回答
0
投票

答案是使用滑动窗口来保持总和。因此,保持两个指针为ij。继续增加j并在其中添加元素。当它超过期望的总和时,增加i并减少i处的元素。然后继续增加j,直到达到总和或总和溢出,然后重复上述过程。

示例总和= 30

[1 41592653589793238 >> i = j = 0 current_sum = 1

[1415926 53589793238 >> i = 0 j = 6 current_sum = 28

在下一次迭代中加5将导致current_sum> 30,因此您增加i

141592653589793238 >> i = 1 j = 6 current_sum = 27

141592653589793238 >> i = 2 j = 6 current_sum = 23

141592653589793238 >> i = 2 j = 7 current_sum = 28

以这种方式继续前进,它将最终到达等于sum = 30的窗口。这应该使您摆脱困境,并帮助您找到答案。

© www.soinside.com 2019 - 2024. All rights reserved.