题解 | #[NOIP2015]金币#

[NOIP2015]金币

https://www.nowcoder.com/practice/8f71f5670e6a45118d24d13868a2da9e

#include <iostream>
using namespace std;

int main() {
    int k;
    cin>>k;
    int d=1,less=k,sum=0;
    while(less>=d){
      sum +=d*d;
      less = less-d;
      d++;
    }
    sum += less*d;
    cout<<sum;
}

k是需要算金币的天数,d是每次完整算钱需要几天,d=1是算一天的钱,d=2是算两天的钱。。。

less是剩余天数,sum是总金币数,如题金币计算为gold=1*1+2*2+3*3+....+n*n;

如果less>大于d就说明能够完整计算一轮n*n,即d*d;如果less<d则不能满足一轮要求,需要单独计算天数,因为剩余天数每经过一轮就会减去上轮天数,则less最终跳出循环后就是剩下的<d的天数,less*d就是最后需要加上的不是完整一轮的金币数;

全部评论

相关推荐

03-19 09:58
河海大学 Java
最喜欢春天的奇亚籽很...:同学,是小红书不是小哄书,一眼就能看到的错误
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务