1. 程式人生 > >2015 junior T1 金幣 題解

2015 junior T1 金幣 題解

題目描述

國王將金幣作為工資,發放給忠誠的騎士。第一天,騎士收到一枚金幣;之後兩天(第二天和第三天),每天收到兩枚金幣;之後三天(第四、五、六天),每天收到三枚金幣;之後四天(第七、八、九、十天),每天收到四枚金幣……;這種工資發放模式會一直這樣延續下去:當連續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; }

好麻煩啊。。。