FMT
<pre><code class="language-cpp">#include <iostream>
using namespace std;
typedef long long ll;
const int maxn = 100005, mod = 998244353;
void FMT(ll *a, int n, int opt = 1){//n为集合大小
for(int i = 1; i < (1 << n); i <<= 1){
for(int j = 0; j < (1 << n); j++){
if(i & j) (a[j] += (a[i^j] * opt % mod + mod) % mod) %= mod;
}
}
}
int main(){
int n; scanf("%d", &n);
FMT(A, n), FMT(B, n);
for(int i = 0; i < n; i++) A[i] = A[i] * B[i] % mod;
FMT(A, n, -1);
return 0;
}</code></pre>