2015 junior T1 金幣 題解
阿新 • • 發佈:2018-11-26
題目描述
國王將金幣作為工資,發放給忠誠的騎士。第一天,騎士收到一枚金幣;之後兩天(第二天和第三天),每天收到兩枚金幣;之後三天(第四、五、六天),每天收到三枚金幣;之後四天(第七、八、九、十天),每天收到四枚金幣……;這種工資發放模式會一直這樣延續下去:當連續N天每天收到N枚金幣後,騎士會在之後的連續N+1天裡,每天收到N+1枚金幣。
請計算在前K天裡,騎士一共獲得了多少金幣。
輸入格式:
一個正整數K,表示發放金幣的天數。
輸出格式:
一個正整數,即騎士收到的金幣數。
輸入樣例1:
6
輸出樣例1:
14
輸入樣例2:
1000
輸出樣例2:
29820
說明
【輸入輸出樣例 1 說明】
騎士第一天收到一枚金幣;第二天和第三天,每天收到兩枚金幣;第四、五、六天,每天收到三枚金幣。因此一共收到 1+2+2+3+3+3=14枚金幣。
【資料範圍】
對於100%的資料,1≤K≤10,000。
解題思路
這道題是迴圈加上判斷
1^2 + 2^2 + 3^2 + 4^2+……
先判斷天數有沒有超,沒超就直接加平方,超了就計算剩餘天數之後再加。
程式碼
#include <iostream>
using namespace std;
int main(){
int a;
cin>>a;
int i=1;
int sum=0;
int ans=0;
while(1){
if(sum+i>a){
break;
}
ans+=i*i;
sum+=i;
i++;
}
int v=a-sum;
for(int j=0;j<v;j++){
ans+=i;
}
cout<<ans;
return 0;
}
好麻煩啊。。。