【题目描述】
有个国王喜欢不断积累金币,有一天,他向国民宣布了新的征收办法:
第一天,国民要向国王缴纳一枚金币;
第二天和第三天,国民每天要向国王缴纳两枚金币;
在之后的三天,也就是第四、第五、第六天,国民每天要向国王缴纳三枚金币;
在之后连续四天,也就是第七、八、九、十天,每天缴纳四枚金币;
总结来说,当国民连续n天每天缴纳了n枚金币之后,国王要求在接下来的n+1天里每天缴纳n+1枚金币。国王有个目标数量T,请问需要征收多少天金币,才能让国王的金币数量大于或等于T?
【输入格式】 输入文件名为king.in.
输入共1行,包含1个正整数,表示征收金币的目标数量T。
【输出文件】 输出文件名为king.out.
输出共1行,包含1个正整数,表示达到目标数量的天数。
【样例输入1】
14
【样例输出1】
6
【样例输入2】
29822
【样例输出2】
1001
【数据范围】
对于100%的数据,1<=T<=100000000.
#include<bits/stdc++.h>
using namespace std;
int main(){
//freopen("king.in","r",stdin);
//freopen("king.out","w",stdout);
int n;
cin>>n;
int cnt=0,coin=1,ans=0,s=0;
while(s<n){
s+=coin;
cnt++;
ans++;
if(cnt==coin){
coin++;
cnt=0;
}
}
cout<<ans;
return 0;
}