比赛 2022级数学专题练习赛10 评测结果 AAAAAAAAAA
题目名称 硬币购物 最终得分 100
用户昵称 HeSn 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2023-04-12 20:37:25
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN = 100010;
int a[5], b[5], f[MAXN];
signed main() {
	freopen("coin.in", "r", stdin);
	freopen("coin.out", "w", stdout);
    int t;
	for(int i = 1; i <= 4; i ++) {
		cin >> a[i];
	}
    f[0] = 1;
    for(int i = 1; i <= 4; i ++) {
    	for(int j = a[i]; j <= MAXN; j ++) {
    		f[j] += f[j - a[i]];
    	}
    }
    cin >> t;
    for(int tt = 1; tt <= t; tt ++) {
        int sum, ans = 0;
        for(int i = 1; i <= 4; i ++) {
        	cin >> b[i];
        }
        cin >> sum;
        for(int i = 0; i <= 15; i ++) {
            int t = sum, flg = 0;
            for(int j = 1; j <= 4; j ++) {
            	if((i >> (j - 1)) & 1) {
            		t -= a[j] * (b[j] + 1);
					flg ^= 1;
            	}
            }
            if(t < 0) {
            	continue;
            }
            if(!flg) {
            	ans += f[t];
            }
			else {
				ans -= f[t];
			}
        }
        cout << ans << endl;
    }
    return 0;
}