一起养成写作习惯!这是我参与「掘金日新计划 · 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;
}