题解 | #[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)
全部评论

相关推荐

11-27 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务