题解 | #[NOIP2015]金币#

[NOIP2015]金币

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

天数 1 2 3 4 5 6 7 ...

金额 1 2 2 3 3 3 4 ...

找规律: 1天1 2天11+2 3天11+22 6天11+22+33 7天11+22+33+41 可以看到3天,6天刚好为天数相加,同时为价格平方相加 7天时候是6天的价格+ (7-6)*4 11天的时候是10天的价格 + (11-(1+2+3+4))*5

k = int(input())
su = 0 
count = 0 # 总金额
if k == 1:
    print(1)
else:
    for i in range(1,k+1):#对天数循环
        su = su + i #天数相加
        if k > su: #如果k大于相加天数,说明前面的都是平方
            count = count + i*i #前面的总数
        else: #如果k小于相加天数,说明有多的天数,但是这部分不够平方
            count = count + (k-(su-i))*i 天数-(相加的天数减去i)就是多的几天,再乘以i就是多出来天数的金额
            break #执行到这里就结束了,直接跳出循环
    print(count)
全部评论

相关推荐

认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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