信奥一本通题1100:金币

1100:金币

image-20230603210549777

解题思路:

根据题意:

1、国王将金币作为工资,发给骑士。

第一天:骑士获得1金币

第二天:骑士获得2金币

第三天:骑士获得2金币

第三天:骑士获得3金币

第四天:骑士获得3金币

第五天:骑士获得3金币

......

以此类推,第N天每天收到N枚金币,N+1天收到N+1枚金币

从题意可以发现:

金币为1,只发1天,一天1枚

金币为2,连续发2天,一天2枚

金币为3,连续发3天,一天3枚

金币为4,连续发4天,一天4枚

所以解题思路如下:

1、使用一个for循环数金币

2、数金币循环内嵌套一个for循环用来数天数,天数不超过当前金币的数量

3、使用一个变量用来记录骑士每天收到的金币

4、使用一个变量用来数天数,从第一天到第n天。

5、在最内层循环中发完工资后,判断天数是不是到了,比如:第一天到第六天骑士获得多少钱,那么判断天数是不是到第六天了,如果是跳出内层循环

6、外层循环也需要跳出,所以在外层循环加一个判断是不是到第六天了,如果是跳出循环。

7、输出当前骑士收到的金币。

程序如下:

#include <iostream>

using namespace std;

int main()
{
    int jin=0,tian=0;
    int n;
    cin>>n;
    for(int i=1; i<=n; i++)//当前金币数
    {
        for(int j=1; j<=i; j++)//数天数,这个天数不超过金币数
        {
            jin=jin+i;//统计当前获得多少金币
            tian++;//记录过了多少天
            if(tian==n)//天数到了没,如果到了跳出循环终止数天数
            {
                break;
            }
        }
        if(tian==n)//天数如果到了,跳出循环终止金币累加
        {
            break;
        }
    }
    cout<<jin;//输出当前金币数
    return 0;
}

posted @ 2023-06-08 11:23  大龙猫先生  阅读(328)  评论(0编辑  收藏  举报