算法题每日一练---第89天:吃鸡蛋

2,465 阅读2分钟

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

一、问题描述

小明家里有 n 个鸡蛋。

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

小明家里还有一个母鸡。

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

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

题目链接:吃鸡蛋

二、题目要求

样例

输入:9 3
输出:13
解释:
第 1∼9 天的早晨,小明可以吃原本就有的鸡蛋。

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

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

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

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

考察

1.模拟、数学
2.建议用时10~15min

三、问题分析

昨天晚上,发现Acwing周赛里面的题目还蛮有意思的,比力扣周赛难度低了一些。今天带来周赛的第一题题解,A了两题就跑了,第三题没看。

吃鸡蛋这题本质上就是一个简单的模拟问题,模拟这一个循环过程。一开始有n个鸡蛋,每天-1,如果是m的倍数,那么鸡蛋的数目等于n+1。直到最后n为0,此时鸡蛋吃完了,输出此时的天数。

四、编码实现

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
    int i,n,m;
    cin>>n>>m;//输入数据
    for(i=1;;i++)
    {
        n--;//每天吃一个
        if(i%m==0)//符合倍数条件,+1
            n++;
        if(n==0)//鸡蛋吃完,输出结果
        {
            cout<< i;
            return 0;
        }
    }
    return 0;
}

五、测试结果

2.png

1.png