$$【组合数学】专题笔记目录$$
对于每一种金属考虑:
- 每一种金属肯定要在其中一个熔炉被冶炼出来,所以方案数为 $C_k^1 + C_k^2 + \dots + C_k^k = 2^k-1$(不能包含 $C_k^0$ 即一个熔炉都不选)。
- 或者理解为:每种熔炉对于这种金属的冶炼状态可以表示为
0/1
,那总共就有 $2^k$ 种情况,减去全0
(全不能冶炼出)就是 $2^k-1$。
接着,由于有 $n$ 种金属,要满足每一种都能被冶炼出来。
根据乘法原理,答案即为 $(2^k - 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;
}