結果
問題 | No.1901 bitwise xor convolution (characteristic 2) |
ユーザー |
![]() |
提出日時 | 2022-04-12 23:22:33 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 1,121 ms / 4,000 ms |
コード長 | 1,311 bytes |
コンパイル時間 | 2,023 ms |
コンパイル使用メモリ | 201,864 KB |
最終ジャッジ日時 | 2025-01-28 17:33:11 |
ジャッジサーバーID (参考情報) |
judge4 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 7 |
ソースコード
#include <bits/stdc++.h> int main() { using namespace std; cin.tie(nullptr)->sync_with_stdio(false); int n; cin >> n; vector<array<unsigned, 32>> a(1 << n); vector<array<unsigned, 32>> b(1 << n); for (auto&& f : a) { for (unsigned& e : f) { cin >> e; } } for (auto&& f : b) { for (unsigned& e : f) { cin >> e; } } for (int s = 1; s < 1 << n; s <<= 1) { for (int o = 0; o < 1 << n; o += s << 1) { for (int i = o, j = o + s; j < o + (s << 1); ++i, ++j) { for (int k = 0; k <= 31; ++k) { tie(a[i][k], a[j][k]) = pair(a[i][k] + a[j][k], a[i][k] - a[j][k]); tie(b[i][k], b[j][k]) = pair(b[i][k] + b[j][k], b[i][k] - b[j][k]); } } } } vector<array<unsigned, 63>> c(1 << n); for (int i = 0; i < 1 << n; ++i) { for (int s = 0; s <= 31; ++s) { for (int t = 0; t <= 31; ++t) { c[i][s + t] += a[i][s] * b[i][t]; } } } for (int s = 1; s < 1 << n; s <<= 1) { for (int o = 0; o < 1 << n; o += s << 1) { for (int i = o, j = o + s; j < o + (s << 1); ++i, ++j) { for (int k = 0; k <= 62; ++k) { tie(c[i][k], c[j][k]) = pair(c[i][k] + c[j][k], c[i][k] - c[j][k]); } } } } for (auto&& f : c) { for (int i = 0; i <= 62; ++i) { cout << (f[i] >> n & 1) << " \n"[i == 62]; } } }