|
|
1
17
我将尽可能简单地解释这一点。 如果输入为15,则累加到15的连续数字为:
在最坏的情况下,这必须小于前n个自然数的和=(n*(n+1)/2。 所以对于一个数字15,不可能有6个连续的数字的组合加起来等于15,因为前6个数字的和等于21,大于15。 计算温度:这是(j*(j+1))/2。 举个例子。输入=15。设j=2。 温度=2*3/2=3;#表示1+2=3 对于两个数字对,让这两个项分别为“a+1”和“a+2”。(因为我们知道数字是连续的。) 现在,根据这个问题,总和必须等于这个数。
如果(15-3)可以被2整除,则可以找到“a”。
同样,让
因此,当输入为15时,j=2、3和5的计数将改变
总结一下: 1) for循环从2开始,原因是什么?
3)
|
|
|
2
4
很明显,一个给定长度的数列最多只能有一个,所以我们基本上是在寻找这些值,这些值可以是这样一个数列的长度。 变量“j”是测试长度。它从2开始,因为序列必须至少有2长。 如果有一个合适的级数,那么让X作为第一个元素。在这种情况下,“输入”=j*(X-1)+温度。 (因此,如果温度>输入,则我们完成) 在最后一行,它检查方程是否有整数解。如果有,那么增加计数器,因为有一个带有j元素的级数是一个解。 实际上这个解是错误的,因为如果input=3它就找不到解。(它将立即终止。)循环应为:
|
|
3
4
我们需要找到所有的
b=15和n=3的示例:
现在代码是:
结果是:
|
|
|
4
2
注意:循环从2开始,因为=>(1*(1+1))/2==1,这没有意义,也就是说,它不影响进度; 设,k=21;
|
|
|
5
2
输入-给定的输入数字这里是15
partial_sum=从1到长度的数字之和(对于1到a的数字是a*(a+1)/2)假设这是一个部分序列
如果sum的剩余部分是长度的倍数,则意味着我们可以将(sum的剩余部分/长度)加到部分序列中 让我们调用(sum/length的剩余部分)作为k 这只意味着我们可以在这里建立一个序列,求和到我们的输入数 现在可以验证了 (k+1)+(k+2)+。。。(k+长度) 我们可以把它简化为k+k+k+。。长度乘以+(1+2+3..长度)
可以减少为=>输入(因为我们现在验证了这一点)
|
|
|
6
2
本质上你只需要知道一个公式:
正如我已经评论过的,原始问题中的代码被窃听了。
如我在下面的代码中所示-使用
代码:
你可以试试看 here
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |