Run ID | Author | Problem | Lang | Verdict | Score | Time | Memory | Code Length | Submit Time |
---|---|---|---|---|---|---|---|---|---|
38014 | andy2025 | 【S】T3 | C++ | Accepted | 100 | 292 MS | 61568 KB | 1299 | 2025-06-08 17:08:47 |
#include <bits/stdc++.h> using namespace std; int n,k,tot,pw[11],sum[830000],f[11],g[11]; vector <int> v[830000]; 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[1]; 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; }