题目
Given the triangle of consecutive odd numbers:
1
3 5
7 9 11
13 15 17 19
21 23 25 27 29
...
Calculate the sum of the numbers in the nth row of this triangle (starting at index 1) e.g.: (Input –> Output)
1 --> 1
2 --> 3 + 5 = 8
默认代码
long long rowSumOddNumbers(unsigned n){
//your code here
}
发现规律
我们很容易就可以发现第n行的第一个数等于前(n-1)行的个数*2+1
而前(n-1)的个数很明显可以用等差数列求n-1行的个数为:[1+(n-1)]*(n-1)/2
,整理得n*(n-1)/2
于是第n行的第一个数k就等于[n*(n-1)/2]*2+1
,整理得n*(n-1)+1
我们也可以发现第n行的n个数与前一项相差为2,所以我们可以将其分成n个k(k是第n行的第一个数)与一个从0开始差为2的等差数列。
于是得:n*[n*(n-1)+1]+[0+(2n-2)]*n/2
,整理得:n * n * n
。
整理过程如下:
代码
long long rowSumOddNumbers(unsigned n){
return (long long)n*n*n;
}