问题:
从行索引计算此三角形的行和。
row_sum_odd_numbers(1); # 1
row_sum_odd_numbers(2); # 3 + 5 = 8
row_sum_odd_numbers(3); # 7 + 9 + 11 = 27
...
Test.assert_equals(row_sum_odd_numbers(1), 1)
Test.assert_equals(row_sum_odd_numbers(2), 8)
Test.assert_equals(row_sum_odd_numbers(13), 2197)
Test.assert_equals(row_sum_odd_numbers(19), 6859)
Test.assert_equals(row_sum_odd_numbers(41), 68921)
问题的解决方案如下:
def row_sum_odd_numbers(n)
return n**3
end
我知道这段代码会返回答案。我不明白它是如何回答的。为什么n的第3个指数返回奇数的行和?
答案 0 :(得分:2)
这只是数学计算:)
让我们找出第一个加数:
在第一次加数之前,我们有1 + 2 + 3 + ... + n-1
个奇数,它们的数量为((n-1)*n)/2
。因此,在他们之后的第一个加数是((n-1)*n)/2 * 2 + 1 = (n-1)*n + 1
。
现在我们应该计算总和:
row_sum_odd_numbers(n)= (n-1)*n + 1 + (n-1)*n + 3 + (n-1)*n + 5 +...+ (n-1)*n + 2*n - 1 =
(n-1)*n*n + 1 + 3 + 5 + ... + 2*n -1 = n^3 - n^2 + n^2 = n^3
答案 1 :(得分:1)
在第n行之前,有1+2+..+(n-1)
个奇数。由于这是算术级数的总和,因此总计
n(n-1)/2
行n
中的第一个数字因此是n(n-1)/2 + 1
个奇数。
n
奇数是
2n - 1
所以行n
中的第一个(奇数)数字是
2(n(n-1)/2 + 1) - 1 = n(n-1) + 1
使用此结果,行n
中的最后一个(奇数)数字等于行n+1
减去2
的第一个数字。
(n+1)n + 1 - 2 = n(n+1) - 1
因此n
行中n
奇数的总和(形成代数级数)
n(n(n-1) + 1 + n(n+1) - 1)/2 = n^3
证明断言。
答案 2 :(得分:0)
首先,需要计算using (IResourceWriter writer = new ResXResourceWriter(file))
{
foreach (KeyValuePair<string, string> item in dictionary)
writer.AddResource(item.Key, item.Value);
}
行开头的数字。如果你绘制三角形,不难发现这是
k
三角形的相应行中的数字之和等于1 + \sum_{j=1}^{k-1}2*j =
= 1 + (2 + ... + 2*(k-1))
= 1 + (2 + 2(k-1))/2*(k-1)
= k^2 - k + 1
个数字的总和,以k
开头,增量为{{1}}。因此结果是
k^2 - k + 1