题目地址:POJ - 2000
题目描述:
国王的骑士第一天可以得到一枚金币,接下来的两天,每天都能得到两枚金币,然后接下来的三天,每天都是3枚金币......
到接下来的n天,每天都能得到n枚金币。你能帮他算一下在第n天总共得到过多少枚金币吗?
输入最少包含一行,最多不超过21行。每一行包含一行测试数据n(1<=n<=10000),表示天数。输入0表示结束。
对于每一行输入有对应的一行输出,包括输入的天数n和Stone学长到第n天得到的金币总数量。
10
6
7
11
15
16
100
10000
1000
21
22
0
10 30
6 14
7 18
11 35
15 55
16 61
100 945
10000 942820
1000 29820
21 91
22 98
#include<stdio.h>
int s[10001] ;
int main() {
int i, j, h ;
j = 1;
h = 1;
for (i=1; i<=10001 ; i++){
s[i] = j + s[i - 1]; // j的值直接赋予数组 ,即每h项相同
if ( h == j){
j++; //若完成循环,则进入下次循环
h = 0 ;
}
h++; //h为对天数的记录
}
int n , d=0 ;
while( scanf("%d" , &n ) !=EOF ) {
if( !n ) break ;
printf("%d %d\n" , n , s[n] ) ;
}
return 0 ;
}