题目描述
Mas有
a枚面额为
1的硬币和
b枚面额为
2的硬币
请你找出最小不能被拼凑得到的正整数硬币面额
输入格式
输入两个整数
a,b
输出格式
输出一个整数,表示最小不能被拼凑得到的正整数硬币面额
输入样例1
0 1
输出样例1
1
输入样例2
1 1
输出样例2
4
输入样例3
4 0
输出样例3
5
数据规模
对于
20%的数据
0≤a,b≤100
对于
60%的数据
0≤a,b≤10^9
对于
100%的数据
0≤a,b≤10^18
这个c++怎么写?
题目描述
Mas有
a枚面额为
1的硬币和
b枚面额为
2的硬币
请你找出最小不能被拼凑得到的正整数硬币面额
输入格式
输入两个整数
a,b
输出格式
输出一个整数,表示最小不能被拼凑得到的正整数硬币面额
输入样例1
0 1
输出样例1
1
输入样例2
1 1
输出样例2
4
输入样例3
4 0
输出样例3
5
数据规模
对于
20%的数据
0≤a,b≤100
对于
60%的数据
0≤a,b≤10^9
对于
100%的数据
0≤a,b≤10^18
这个c++怎么写?
🕒下午好,题主!目前:🟢[在线]
📢参考GPT-4o mini 模型、由清水白石008整理提供!
📣今日金句:“成功是一个旅程,而不是一个目的地。” — 亚瑟·阿什
要解决这个问题,我们需要找出最小的正整数,这个整数不能用给定数量的1元和2元硬币拼凑出来。我们可以通过分析不同情况下的可能性来找到这个整数。
只有1元硬币 (b = 0
):
a + 1
,因为我们可以拼凑出从1到a的所有整数,但不能拼凑出 a + 1
。只有2元硬币 (a = 0
):
1
,因为我们无法拼凑出1。同时有1元和2元硬币:
a + 2 * b + 1
,因为我们可以拼凑出所有小于等于 a + 2 * b
的正整数。下面是实现上述逻辑的C++代码:
#include <iostream>
using namespace std;
int main() {
long long a, b;
cin >> a >> b;
if (b == 0) {
// 只有1元硬币
cout << a + 1 << endl;
} else if (a == 0) {
// 只有2元硬币
cout << 1 << endl;
} else {
// 同时有1元和2元硬币
cout << a + 2 * b + 1 << endl;
}
return 0;
}
a
和 b
。b
为0,输出 a + 1
。a
为0,输出 1
。a + 2 * b + 1
。这个代码可以处理题目给出的所有数据规模。