题目
描述
小A有 a 个价值为 x 元的硬币和 b 个价值为 1 元的硬币,请问他最多可以凑出多少种不同的钱数?(包括 0 元)
输入
三个空格分隔的整数a,x,b。0≤a,x,b≤10000
输出
一个正整数,表示答案。
样例
输入1
1 2 3
输出1
6
输入2
0 5 6
输出2
7
分析
此题用小学知识即可
先分析下样例一的输入吧
由乘法原理可得:若不考虑交集部分,则为(a+1)(b+1)种
样例一交集部分为2,即为(3-2+1);
通过总结和发现一般性规律,交集部分为 a(b-x+1)
这样就做完了
完整代码如下
#include <bits/stdc++.h>
using namespace std;
int a,x,b,v;
int main(){
scanf("%d%d%d",&a,&x,&b);
if(a==0)cout<<b+1;
else if(b==0)cout<<a+1;
else{
if(b<x)cout<<(a+1)*(b+1);
else if(b>=x)cout<<(a+1)*(b+1)-a*(b+1-x);
}
return 0;
}