洛谷 金币p2669 c++
链接: [link]- [P2669 [NOIP2015 普及组] 金币](https://www.luogu.com.cn/problem/P2669)#include <iostream>
using namespace std;
int main()
{
int k,sum=0,coin=0,day=0;
cin>>k;
for(day=0;day+coin<=k;day+=coin,coin++)
{
sum+=coin*coin;
}
sum+=(k-day)*coin;
cout<<sum;
return 0;
}
解题思路:
假如有7天
天数 | 金币数 |
---|---|
1 | 1 |
2 | 2 |
3 | 2 |
4 | 3 |
5 | 3 |
6 | 3 |
7 | 4 |
我们可以从中找到规律,即1 1,23 2,345 3…以天数为单位,发现经过的天数和金币数相同,得到的金币为1* 1 + 2* 2+ 3* 3;
day | sum | coin |
---|---|---|
0 | 0 | 1 |
1 | 1* 1 | 2 |
3 | 1* 1+2* 2 | 3 |
6 | 1* 1+2* 2+3* 3 | 4 |
7 | (k-6)*4 | 结束 |