首页 > 试题广场 >

[NOIP2015]金币

[编程题][NOIP2015]金币
  • 热度指数:12659 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。
请计算在前K天里,骑士一共获得了多少金币。

输入描述:
输入只有1行,包含一个正整数K,表示发放金币的天数。


输出描述:
输出只有1行,包含一个正整数,即骑士收到的金币数。
示例1

输入

6

输出

14

说明

骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到1+2+2+3+3+3=14枚金币。
示例2

输入

1000

输出

29820

备注:
对于100%的数据,1 ≤ K ≤ 10,000。
k = int(input())
n = 0
money = 0
for i in range(1,k+1):
    n += i
    money = i*i+money
    if n == k:
        break
    elif n > k:
        money = money-(n-k)*i
        break
print(money)  

发表于 2024-02-13 15:05:59 回复(0)
数列(1个1, 2个2 , 3个3 ... ?个n),前n-1项统计为(n+1)*n/2个,第n项可能不足n
a = int(input())
sum=0
n = 1
while a - (n+1)*n/2 >= 0:
    sum = sum + n**2    
    n = n+1
res = (a - (n-1)*n/2)*n
print(int(sum+res))



编辑于 2024-02-04 10:48:10 回复(0)
k = int(input())
count = 1
sum = 0
while k > 0:
    if k-count >= 0:
        sum += count**2
    else:
        sum += k * count
    k = k - count
    count += 1
print(sum)

发表于 2022-07-17 13:38:30 回复(0)
a=int(input())
sum=0
k=1
while a>0:
    if a-k>=0:
        sum+=k*k
    else:
        sum+=k*(a)
    a=a-k
    k=k+1
print(sum)


发表于 2022-03-10 22:01:44 回复(2)

问题信息

难度:
5条回答 1986浏览

热门推荐

通过挑战的用户

查看代码