P2669 [NOIP2015 普及组] 金币 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
思路:
1.while()循环,设置天数num,每天num++,如果num=要捡金币的天数,直接结束循环
2.设置sum存储金币,设置一个flag为每天要加的金币
3.while()嵌套for循环,枚举当前金币发放几天
为什么这道题时间设置如此严格,必须直接return 0,用break先结束再输出都 TLE
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a;
cin>>a;
int num=0,sum=0,jinbi=0;
while(1)
{
jinbi++;//金币数++
for(int i=1;i<=jinbi;i++)//遍历金币天
{
sum=sum+jinbi;//加金币
num++;//天数++
if(num==a)//如果天数=输入天数(a)
{
cout<<sum;//输出总和,结束程序
return 0;
}
}
}
}