結果
| 問題 |
No.2344 (l+r)^2
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-06-09 21:34:17 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,275 bytes |
| コンパイル時間 | 1,956 ms |
| コンパイル使用メモリ | 200,232 KB |
| 最終ジャッジ日時 | 2025-02-13 23:49:03 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 2 WA * 10 |
ソースコード
#include <bits/stdc++.h>
#define int long long
using namespace std;
using ll = long long;
void solve();
template<typename ...Args>
void println(Args... args) {
apply([](auto &&... args) { ((cout << args << ' '), ...); }, tuple(args...));
cout << '\n';
}
int32_t main() {
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
int t = 1;
cin >> t;
for (int tc = 0; tc < t; ++tc) {
solve();
}
return 0;
}
int go(vector<int> a, int m) {
if (a.size() == 1) return a[0];
vector<int> b(a.size() - 1);
for (int i = 0; i + 1 < a.size(); ++i) b[i] = a[i] + a[i + 1];
for (int &x : b) x *= x;
for (int &x : b) x %= (1LL << m);
return go(b, m);
}
void solve() {
int n, m;
cin >> n >> m;
vector<int> a(n);
for (int &x : a) cin >> x;
if (a.size() <= m) return println(go(a, m));
auto binom = [&](int n, int k) {
for (int bit = 0; (1 << bit) <= n; ++bit) {
if (((n & (1 << bit)) == 0) && ((k & (1 << bit)))) return 0;
}
return 1;
};
vector<int> b(m);
for (int i = 0; i < m; ++i) {
for (int j = 0; j + m <= n; ++j) {
b[i] += binom(n - m + 1, j) * a[i + j];
b[i] %= 2;
}
}
cout << go(b, m) << '\n';
}