题目
有一个坑,题目下方事例,数量为0的就没有输出。我以为为0的就不用输出,特意加了判断。结果有4道题WA,去掉了那个判断才AC/
### 翻译如下
你有500日元硬币A枚、100日元硬币B枚、50日元硬币 C枚。 现在,从这些硬币中挑出数枚硬币,各个硬币价格之和刚好等于X日元的组合有多少种。 需要注意的是:
1. 同种类(面值)的硬币是没有区别的
2. 不同的组合方式以某个面值的硬币数量不同来区分
3. 0 ≤ A, B, C ≤ 50
4. A + B + C ≥ 1
5. 50 ≤ X ≤ 20,000
6. A, B, C 一定是整数
7. X 一定是50的倍数
输入格式A枚500日元硬币
B枚100日元硬币
C枚50日元硬币
组合价值之和等于X元
输出格式
组合的方式个数
### 题解
其实题看懂了,就好做了
需要注意的是,不要N^2了,分分钟超时。后面要加个判断,当前循环已经超了就不用继续模拟了。这样可以减到N²/2
#include <stdio.h> int main () { int a, b, c, x, i, j, k, cnt=0; scanf("%d%d%d%d", &a, &b, &c, &x); for (i=0; i <= a && 500*i<=x; i++) { for (j=0; j <= b && 100*j+500*i<=x; j++) { for (k=0; k <= c && 50*k+100*j+500*i<=x; k++) { if (500*i+100*j+50*k==x) { cnt++; } } } } printf("%d", cnt); return 0; }