每日一题——吃鸡蛋

133 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情

题目描述

小明家里有 n 个鸡蛋。

每天早上,小明都要吃 1 个鸡蛋作为早餐。

小明家里还有一个母鸡。

母鸡会在第 m,2m,3m…天的晚上下蛋,每次只下 1 个蛋。

请问,连续多少天以后,小明就没有早餐鸡蛋吃了?

输入格式

一行两个整数 n,m。

输出格式

一个整数,表示答案。

数据范围

所有测试点满足 1≤n≤100,2≤m≤100。

输入样例1:

2 2

输出样例1:

3

样例1解释

第 1,2 天的早晨,小明可以吃原本就有的鸡蛋。

第 3 天的早晨,小明可以吃第 2 天晚上母鸡下的鸡蛋。

第 4 天的早晨,小明没有鸡蛋可以吃了。

所以,连续 3 天以后,小明就没有早餐鸡蛋可以吃了。

输入样例2:

9 3

输出样例2:

13

样例2解释

第 1∼91∼9 天的早晨,小明可以吃原本就有的鸡蛋。

第 10,11,1210,11,12 天的早晨,小明可以吃第 3,6,93,6,9 天晚上母鸡下的蛋。

第 1313 天的早晨,小明可以吃第 1212 天晚上母鸡下的蛋。

第 1414 天的早晨,小明没有鸡蛋可以吃了。

所以,连续 1313 天以后,小明就没有早餐鸡蛋可以吃了。

思路

本题主要考察模拟的思想。我们只需要用代码表示题目即可,当家中的鸡蛋数还有的时候,我们就往数组中存放1,每次存放1的时候会消耗一个鸡蛋,当母鸡下蛋的时候鸡蛋数会增加一个,最后只需要统计数组中1的个数即可得出答案。

代码

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;
​
const int N = 10010;
​
int q[N];
​
int main()
{
    
    int n, m;
    cin >> n >> m;
    int j = n;
    for(int i = 1;i <= 10010;i ++)
    {
        if(j > 0) q[i] = 1;
        j--;
        if(i % m == 0) j++;
    }
    int res = 0;
    for(int i = 1;i <= 10010;i ++) if(q[i] == 1) res ++;
    cout << res << endl;
    
    return 0;
}