2011-06-01 22:11:15Morris
d881. 作業苦多
http://zerojudge.tw/ShowProblem?problemid=d881
內容 :
學校作業何其多~~老二為此苦惱了許久,現在又有一份數學作業,他想節省時間,所以想找一個程式來解決此問題,你能幫嗎?詳細題目如下:
計算一級數
每項的差形成一個等差數列
每一題給定一等差數列的公差
此等數列有50項,第一項為1
輸出此數列和(1+到50項)
例如輸入為1(此為各項差形成的等差級數的公差)
答案要輸出1+2+4+7+11+......(到50項)
若輸入為2
答案要輸出1+2+5+10+17+26+37...... (到五十項)
輸入說明
:
每次輸入一個測資d,代表公差(d<=100)
輸出說明
:
輸出級數和(1+到50項)
範例輸入 :
1
範例輸出 :
20875
提示
:
出處
:
CSDC
(管理:leepupu)
作法 : 數字很小,懶得導公式,直接硬爆
/**********************************************************************************/
/* Problem: d881 "作業苦多" from CSDC */
/* Language: C */
/* Result: AC (2ms, 256KB) on ZeroJudge */
/* Author: morris1028 at 2011-06-01 20:12:36 */
/**********************************************************************************/
#include<stdio.h>
main() {
int d;
while(scanf("%d", &d) == 1) {
int sum = 0, a, t = 1;
for(a = 0; a < 50; a++)
sum += t, t = 1+(2+a*d)*(a+1)/2;
printf("%d\n", sum);
}
return 0;
}
上一篇:d827. 買鉛筆
下一篇:d984. 棄保效應
t = 1+(2+a*d)*(a+1)/2;
這句可以解釋一下嗎?
不太懂......
答案要輸出1+2+5+10+17+26+37...... (到五十項)
第n項 = 1+(1+(1+d)+(1+2d) ... 1+(n-1)d)
= 1+ (2*1+ (n-1)d)*(n)/2; 2011-11-18 06:10:34