题解 | #[NOIP2015]金币#

[NOIP2015]金币

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

#include <iostream>
using namespace std;
//此方法是计算n天时,骑士当天一天能够获得金币数计算的
//通过计算当天一天获得金币数可以确定两个信息 1,增加工资的次数 2,在该工资的情况下,骑士工作了多少天
int main() {
    int n, income = 0,coin = 1;
    scanf("%d", &n);
    int rest = 0,whole = 0; //whole 表示在不超过n天的情况下,增加工资的次数; rest表示在当前工资情况下工作									的天数
    for(int i = 1; i < n; i++)//计算最大的工资增加次数
    {
        if(i*(i+1) <=2*n && (i+1)*(i+2) > 2*n)
        {
            whole = i; break;
        }   
    }
    rest = n - (whole + 1)*whole /2;//计算最大的工资时,骑士的工作天数
    for(int i = 1; i <= whole;i++)//以工资增加次数为终止条件
    {
        for(int j = 0; j < i;j++)	//每增加一次工资,该工资条件下的工作天数就等于该工资给的金币数
        {
            income += coin;		//每次增加一天,收入按当前工资增加
        }
        coin++;					//每经历一个工资增加周期,工资加一
    }
    income += rest*coin;		//将不足一个循环周期的工资加入总收入中
    cout << income ;
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

投递长鑫存储等公司9个岗位
点赞 评论 收藏
分享
05-21 15:47
门头沟学院 Java
浪漫主义的虹夏:项目有亮点吗,第一个不是纯玩具项目吗,项目亮点里类似ThreadLocal,Redis储存说难听点是花几十分钟绝大部分人都能学会,第二个轮子项目也没体现出设计和技术,想实习先沉淀,好高骛远的自嗨只会害了自己
点赞 评论 收藏
分享
炫哥_:哥们项目描述里面vector和mysql之类的都要写吗,直接开头技术栈巴拉巴拉就行了,完全不是技术点啊
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 15:19
简历上能写3个月吗?
码农索隆:大胆写,主要你能把实习经历包装好,可以看一下我这篇帖子https://www.nowcoder.com/share/jump/4888395581180798063
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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