国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续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 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;
}
#include <stdio.h>
int main() {
int x,sum,count,coin,alt;
scanf("%d",&x);
sum=0;
alt=0;
coin=0;
count=0;
for(int i=1;sum<=x;i++){
sum+=i;
count++;
}
for(int j=1;j<=count-1;j++){
coin+=j*j;
alt+=j;
}
int m=x-alt;
coin+=count*m;
printf("%d",coin);
return 0;
} 我的做法好笨,不知道大家能不能看懂
#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()
{
int n = 0;//天数
int a = 0, sum = 0;//金币数
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
a = i;
int x = (1 + a) * a / 2;
if (x <= n)
{
while (a)
{
sum += i;
a--;
}
if(x==n)
break;
}
else
{
x = (i - 1) * i / 2;
sum += (n - x) * i;
break;
}
}
printf("%d", sum);
return 0;
} #include <stdio.h>
#include "math.h"
int main()
{
int data = 0;
int sum = 0;
int k = 1;
scanf("%d", &data);
for (int i = 1; k < data + 1; i++) //记录外天数
{
//记录内天数
//i == 1就执行一次,每次给一个金币
//i == 2就执行了两次,每次给两个金币
for (int j = 0; j < i; j++) {
if(k > data)
break;
sum += i; //每次给金币数和循环次数相同
k++;
}
}
printf("%d",sum);
return 0;
} #include <stdio.h>
int main()
{
int i = 0,n = 0,sum = 0,sum0 = 0;
while(scanf("%d",&n) != EOF)
{
for (i = 1;i <= n; i++)
{
sum += i;
sum0 += i * i;
if (sum == n)
{
break;
}
else if(sum > n)
{
int temp = n - (sum - i);//此行必须定义于此!!!
sum0 -= i * i; //我们不需要加上此时的i * i!
sum0 += temp * i;//我们要加上的是temp * i!
break;
}
}
printf("%d",sum0);
}
return 0;
}
#include <stdio.h>
int main() {
int k=1,sum=0;
scanf("%d",&k);
int i=1;
int count=0;
while((k-count)>=i){
sum+=i*i;
count+=i;
i++;
}
if(count!=k){
sum+=i*(k-count);
}
printf("%d",sum);
}