Test Message

b558: 求數列第 n 項

內容

有一個數列,第一項的值為 1,第二項的值為第一項加 1,第三項的值為第二項加 2,第四項的值為第三項加 3 … 第 k 項的值為第 k-1 項的值加上 k-1。

給一個數字 n,請印出這個數列的第 n 項。


輸入

本題為重複輸入,有多筆測資。

每筆輸入有一個數字 n,1<=n<=500。

1
4

輸出

印出數列的第 n 項。

1
7


解題思路

簡單的動態規劃,根據題意打好答案表,之後查表輸出。

也可以不打表用數學解的方式,公式如下

f(n) = 1 + n * (n - 1) / 2


完整程式碼

AC (2ms, 88KB)
#include <stdio.h>
#define MAX 500

int list[MAX - 1] = { 0,1 };

int main()
{
int n;
for (int i = 1; i < MAX; i++)
list[i + 1] = list[i] + i;
while (scanf(" %d", &n) == 1)
{
printf("%d\n", list[n]);
}
return 0;
}