Description
给出形如下图的三角形,问它包含多少个小三角形.
Input
测试包含多组数据,每行一个数N,代表三角形的层次,上图样例为二层。N<=500
整个测试以数字零代表结束
整个测试以数字零代表结束
Output
输出包括多行,每行一个数,结果如题所要求。
Sample Input
1
2
3
0
Sample Output
1
5
13
HINT
Source
每增加一行,增加的正三角形和倒三角形个数有规律,可以通过递推解决
#include<stdio.h>
int dp[510] = { 0, 1 };
int main() {
int i, n;
for (i = 2; i <= 500; i++) {
if (i % 2 == 1)
dp[i] = dp[i - 1] + (i * i - 1) / 4 + i * (i + 1) / 2;
else
dp[i] = dp[i - 1] + (i * i) / 4 + i * (i + 1) / 2;
}
while (scanf("%d", &n) != EOF)
printf("%d\n", dp[n]);
return 0;
}