国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。
请计算在前K天里,骑士一共获得了多少金币。
输入只有1行,包含一个正整数K,表示发放金币的天数。
输出只有1行,包含一个正整数,即骑士收到的金币数。
6
14
骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到1+2+2+3+3+3=14枚金币。
1000
29820
对于100%的数据,1 ≤ K ≤ 10,000。
#include <stdio.h>
int main() {
//当前天数、总天数
int nday = 1, aday = 0;
//总工资
int sum = 0;
//每天的工资
int x = 1;
//与工资对应的次数
int y = 0;
scanf("%d", &aday);
while (nday <= aday) {
sum = sum + x;
y++;
//完成一轮与工资对应的相加次数递增
if (x == y) {
x++;
y = 0;
}
//天数递增
nday++;
}
printf("%d", sum);
return 0;
} #include <stdio.h>
int main()
{
long int day = 0, sum = 0;
int count = 0,i = 0;
scanf("%ld", &day);
for (i = 1; i <= day; i++)
{
int j = 0;
for (j = 0; j < i; j++)
{
sum += i;
count++;
if (day == count)
break;
}
if (day == count)
break;
}
printf("%ld", sum);
return 0;
} #include <iostream>
using namespace std;
int main()
{
int date, sum = 0, count = 1, day = 1;
cin >> date;
for(int i = 1; i <= date; i++)
{
sum += day;
if(i == count)
{
day ++;
count += day;
}
}
cout << sum;
return 0;
}
#include<iostream>
using namespace std;
/*
类比数学问题:
sum = 1*1 + 2*2 + 3*3 + ... + n*n (k>=n);
sum = 1*1 + 2*2 + 3*3 + ... + k*n (k<n);
*/
int main() {
int k,result=0;
cin>>k;
for(int i=1;k>0;i++)
{
if(k>=i) result+=i*i;
else result+=i*k;
k-=i;
}
cout<<result<<endl;
return 0;
}
import java.util.*;
public class Main{
public static int getcoin(int n) {
int cion=0,num=0;
for(int i=1;num<n;i++){
for(int j=1;j<=i&&num<n;j++){
cion+=i;
num++;
}
}
return cion;
}
public static void main(String love[]){
Scanner input=new Scanner(System.in);
int n=input.nextInt();
System.out.print(getcoin(n));
input.close();
}
} #include<stdio.h>
/*
类比数学问题:
sum = 1*1 + 2*2 + 3*3 + ... + n*n (k>=n);
sum = 1*1 + 2*2 + 3*3 + ... + k*n (k<n);
*/
int main()
{
int k;
int i = 1;
int result = 0;
scanf("%d", &k);
while(k>0)
{
if(k >= i)
result += i*i;
else
result += k*i;
k -= i;
i++;
}
printf("%d\n", result);
return 0;
} #include <stdio.h>
int main() {
int k;
int day=1;
int sum=0;
scanf("%d",&k);
for(int i=1;i<=k;i++) {
for (int j=1;j<=i;j++) {
sum=sum+i;
day++;
if (day>k) {
goto here;
}
}
}here :
printf("%d",sum);
return 0;
}