国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第...
题目描述国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币,……这种工资发放模式会一直这样延续下去:当连续N
天每天收到N
枚金币后,骑士会在之后的连续N+1
天里,每天收到N+1
枚金币。
请编程计算在前K
天里,1≤K≤10000
,骑士一共获得了多少金币。
输入描述
一行一个正整数K
,表示发放金币的天数。
输出描述
一行一个正整数,表示骑士收到的金币数。
我的代码如下:#include<bits/stdc++.h>
using namespace std;
int main()
{
int k,i,j,day=0,sum=0;
cin>>k;
int count=0;
for(i=1;;i++)
{
for(j=1;j<=i;j++)
{
day++;
sum=sum+i;
if(day==k)
{
cout<<sum<<endl;
}
}
}
}
请问这个哪里错了 你的代码思路是正确的,使用两个循环嵌套来模拟金币发放的规律。但是你的代码缺少退出循环的条件,导致程序无法结束。另外,变量`count`没有用到。
下面是修改后的代码:
++
#include <iostream>
using namespace std;
int main()
{
int k, day = 0, sum = 0;
cin >> k;
int count = 0;
for (int i = 1; day < k; i++) {
for (int j = 1; j <= i; j++) {
day++;
if (day > k) {
break;
}
sum += i;
}
count++;
}
cout << sum << endl;
return 0;
}
这里使用了一个外层循环 `i` 来控制每一组金币发放的天数,内层循环 `j` 来计算每一天的金币数量。当 `day` 大于 `k` 时,就退出循环,不再进行计算。循环结束后,输出骑士收到的金币数量 `sum`。
希望对你有所帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]