【组合数学】专题笔记目录
对于每一种金属考虑:
- 每一种金属肯定要在其中一个熔炉被冶炼出来,所以方案数为 C1k+C2k+⋯+Ckk=2k−1(不能包含 C0k 即一个熔炉都不选)。
- 或者理解为:每种熔炉对于这种金属的冶炼状态可以表示为
0/1
,那总共就有 2k 种情况,减去全0
(全不能冶炼出)就是 2k−1。
接着,由于有 n 种金属,要满足每一种都能被冶炼出来。
根据乘法原理,答案即为 (2k−1)n。
#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
int n, k;
int qmi(int a, int k) {
int res = 1 % k;
while (k) {
if (k & 1) res = (long long)res * (long long)a % mod;
a = (long long)a * (long long)a % mod;
k >>= 1;
}
return res;
}
int main() {
scanf("%d%d", &n, &k);
printf("%d\n", qmi(qmi(2, k) - 1, n));
return 0;
}