oj系统1160金币需要

问题遇到的现象和发生背景
问题相关代码,请勿粘贴描述

国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去。当连续 n天每天收到 n 枚金币后,骑士会在之后的连续 n+1 天里,每天收到 n+1 枚金币(n 为正整数)。

请编程确定从第一天开始的给定天数内,骑士一共获得了多少金币。

输入
输入包含至少一行,但不多于 1000 行。

除最后一行外,输入的每行是一组输入数据,包含一个正整数 n,表示天数。

输入的最后一行为 0,表示输入结束。

输出
对每个数据输出一行一个整数,表示该数据对应总金币数。

输入样例 1

10
6
7
11
15
16
100
10000
1000
21
22
0
输出样例 1

30
14
18
35
55
61
945
942820
29820
91
98截图

运行结果及报错内容
#include<iostream>
using namespace std;
int main(){
    int a,b=1,c=1,d=0,e=1;
    long long x=1;
    cin>>a;
    while(b<=a){
        d+=c;
        b++;
        
        if(b>e){
            c++;
            e+=c;
            x=c+d;
            cout<<x<<endl;
            
        }
    }
    cout<<"0"<<endl;
    cout<<d;
    return 0;
}


我的解答思路和尝试过的方法

用double和longlong

我想要达到的结果

输出样例 1

30
14
18
35
55
61
945
942820
29820
91

有大奖,快来,实物水晶,