鱼C论坛

 找回密码
 立即注册
查看: 600|回复: 1

国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第...

[复制链接]
发表于 2023-12-14 19:17:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币,……这种工资发放模式会一直这样延续下去:当连续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;
            }
        }
    }
}


请问这个哪里错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-14 19:17:33 | 显示全部楼层
你的代码思路是正确的,使用两个循环嵌套来模拟金币发放的规律。但是你的代码缺少退出循环的条件,导致程序无法结束。另外,变量`count`没有用到。

下面是修改后的代码:
  1. ++
  2. #include <iostream>
  3. using namespace std;
  4. int main()
  5. {
  6.     int k, day = 0, sum = 0;
  7.     cin >> k;
  8.    
  9.     int count = 0;
  10.     for (int i = 1; day < k; i++) {
  11.         for (int j = 1; j <= i; j++) {
  12.             day++;
  13.             if (day > k) {
  14.                 break;
  15.             }
  16.             sum += i;
  17.         }
  18.         count++;
  19.     }
  20.    
  21.     cout << sum << endl;
  22.   
  23.     return 0;
  24. }
复制代码

这里使用了一个外层循环 `i` 来控制每一组金币发放的天数,内层循环 `j` 来计算每一天的金币数量。当 `day` 大于 `k` 时,就退出循环,不再进行计算。循环结束后,输出骑士收到的金币数量 `sum`。

希望对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 13:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表