题目地址:?http://acm.nyist.net/JudgeOnline/problem.php?pid=122?
?
描述
The?nth?Triangular?number,?T(n) = 1 + … +?n, is the sum of the first?n?integers. It is the number of points in a triangular array with?n?points on side. For example?T(4):
X
X X
X X X
X X X X
Write a program to compute the weighted sum of triangular numbers:
W(n) =?SUM[k?= 1…n;?k?*?T(k?+ 1)]
输入
The first line of input contains a single integer N, (1 ≤ N ≤ 1000) which is the number of datasets that follow.
Each dataset consists of a single line of input containing a single integer n, (1 ≤ n ≤300), which is the number of points on a side of the triangle.
输出
For each dataset, output on a single line the dataset number (1 through N), a blank, the value of n for the dataset, a blank, and the weighted sum ,W(n), of triangular numbers for n.
样例输入
4
3
4
5
10
样例输出
1 3 45
2 4 105
3 5 210
4 10 2145
?
?
英文没咋看懂,重要的是这个公式:
W(n) =?SUM[k?= 1…n;?k?*?T(k?+ 1)]
?
从1开始遍历到输入的n k
k* sum[1-(k+1)]
然后将各个项相加取和
?
最终输入的格式是:
序号 输入的数值 最终的和
?
代码:
?
#include <stdio.h>
static int getSum(int num);
int main()
{
???? int readLen = 0;
???? scanf("%d",&readLen);
???? getchar();
????
???? int index = 1;
???? while(readLen > 0)
???? {
????????? int num = 0;
????????? scanf("%d",&num);
????????? getchar();
?????????
????????? int sum = getSum(num);
????????? printf("%d %d %d\n",index,num,sum);
????????? ++index;
?????????
????????? --readLen;
???? }
????
???? return 0;
}
static int getSum(int num)
{
???? int index = 1;
???? int result = 0;
???? int tmpSum = 1;
???? for(;index <= num;++index)
???? {
????????? tmpSum += (index+1);
????????? result += index*tmpSum;
???? }
????
???? return result;
}