提交时间:2025-06-08 17:04:16
运行 ID: 38013
#include <bits/stdc++.h> using namespace std; int n,k,tot,pw[11],sum[823543],f[11],g[11]; vector <int> v[823543]; void init() { pw[0] = 1; for(int i = 1;i <= n;i++) pw[i] = pw[i - 1] * k; tot = pw[n]; for(int S = 0;S < tot;S++) { int tmp = S; for(int i = 0;i < n;i++) { v[S].push_back(tmp % k); tmp /= k; } } } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> k; k++; init(); for(int i = 0;i < tot;i++) cin >> sum[i]; for(int i = n - 1;~i;--i) { for(int S = 0;S < tot;S++) { if(v[S][i]) continue; for(int j = 0;j < k;j++) g[j] = sum[S + j * pw[i]]; if(k == 4) { f[1] = g[2] - g[3]; f[2] = g[1] - g[0]; f[0] = g[0] - f[0]; f[3] = g[3] - f[2]; } if(k == 6) { f[2] = g[1] - g[0]; f[3] = g[4] - g[5]; f[4] = g[3] - f[2] - f[3]; f[5] = g[5] - f[4]; f[1] = g[2] - f[2] - f[3]; f[0] = g[0] - f[1]; } if(k == 7) { f[4] = g[5] - g[6]; f[2] = g[1] - g[0]; f[3] = g[3] - f[2] - f[4]; f[5] = g[4] - f[3] - f[4]; f[6] = g[5] - f[4] - f[5]; f[1] = g[2] - f[2] - f[3]; f[0] = g[0] - f[1]; } for(int j = 0;j < k;j++) sum[S + j * pw[i]] = f[j]; } } for(int i = 0;i < tot;i++) cout << sum[i] << " "; return 0; }