「NOIP2015 普及组」金币

题目描述
国王将金币作为工资,发放给忠诚的骑士。

第一天骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天,每天收到四枚金币,以此类推;这种工资发放模式会一直延续下去,当连续N天收到N枚金币后,骑士会在之后的N+1天,每天收到N+1枚金币。

请计算前K天里,骑士一共获得了多少金币。

输入
输入包含一个正整数K,表示发放金币的天数。
输出
输出一个正整数,即骑士收到的金币数。
样例输入
6
样例输出
14
提示

  骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每 天收到三枚金币。因此一共收到 1+2+2+3+3+3=14 枚金币

【数据范围】对于 100%的数据,1 ≤K ≤10,000。

#include<stdio.h>
int main(){
    int k,b=0,i=1;
    scanf("%d",&k);
    while(k>i){
        b+=i*i;
        k-=i;
        i++;
    }
    b+=i*k; 
    printf("%d",b);
    return 0;
}

你可能感兴趣的:(编程)