列表

详情


NC231915. 简单的工资发放问题

描述

在实验室管理中,bs经常以发放工资的方式奖赏他的助理,因为bs有花不完的钱。
bs按照以下的规律发放工资:第一天,助理获得一个金币,后面两天助理每天获得2个金币,之后三天,助理每天获得3个金币......
现在问你到第n天结束,助理一共获得了多少金币。

输入描述

输入只有一行,包含一个正整数 ,表示助理获得金币的天数。

输出描述

输出只有一行,包含一个整数,即骑士收到的金币数。

示例1

输入:

6

输出:

14

说明:

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

示例2

输入:

1000

输出:

29820

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 3ms, 内存消耗: 316K, 提交时间: 2021-12-19 15:08:36

#include<stdio.h>
int main()
{
	int t,a=1,sum=0;
	scanf("%d",&t);
	for(int i=0;i<t;)
	{
		int b=a;
		while(b--)
		{
			sum+=a;
			i++;
			if(i>=t)break;
			
		}
		a++;
	}
	printf("%d",sum);
}

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 432K, 提交时间: 2022-12-01 15:12:01

#include<bits/stdc++.h> 
using namespace std;
int main(){
	int a,sum=0,j=0,i=1;
	cin>>a;
	while(j<a){
		sum+=i;
		j++;
		if(j>=(i+1)*i/2) i++;
	}
	cout<<sum;
	return 0;
}

Python3 解法, 执行用时: 43ms, 内存消耗: 4564K, 提交时间: 2022-01-06 15:53:54

n = int(input())
i = 0
t = 0
sum = 0
while i <= n:
    i += t
    sum += t * t
    t += 1
print(sum - (i - n) * (t - 1))

上一题