-请奆佬们洁身自好,好好打代码从我做起 -
题目大意:
有一方程
\[A_1 B_1+A_2 B_2+⋯+A_n B_n=c \]已知C和所有的A的值,
求所有的B的值有多少组非负整数解。
总解数用999983取模
题目分析:
将 A视为重量, B视为买的数量,C视为背包容量,则问题可视为:
给出完全背包容量,物品的重量,
求装满情况下有几种方案
题目同货币系统,但要加mod
上代码:
#include <bits/stdc++.h>
using namespace std;
long long int f[200000], n, a[200000], g;
int main() {
cin >> n >> g;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
f[0] = 1;
for (int i = 1; i <= n; i++) {
for (int j = a[i]; j <= g; j++) {
f[j] = f[j] + f[j - a[i]];
f[j] %= 999983;
}
}
cout << f[g] % 999983;
}