結果
問題 | No.2344 (l+r)^2 |
ユーザー |
![]() |
提出日時 | 2023-06-07 22:10:13 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 423 ms / 2,000 ms |
コード長 | 786 bytes |
コンパイル時間 | 1,951 ms |
コンパイル使用メモリ | 199,932 KB |
最終ジャッジ日時 | 2025-02-13 23:15:50 |
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 12 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define int long long signed main(){ int T; cin>>T; while(T--){ int N,M; cin>>N>>M; vector<int> A(N); for(int i=0;i<N;i++) cin>>A[i]; if(N <= 2*M){ vector<int> B = {}; for(int x:A) B.push_back(x); while(B.size() != 1){ vector<int> C = {}; for(int i=1;i<B.size();i++) C.push_back((B[i]+B[i-1])*(B[i-1]+B[i])%(1<<M)); B = C; } cout<<B[0]<<endl; continue; } vector<int> C(M); for(int i=0;i<M;i++)for(int j=i;j<=N-M+i;j++)if(((N-M)&(j-i)) == j-i && A[j]%2) C[i] = (C[i]+1)%2; vector<int> D = {}; for(int x:C) D.push_back(x); for(int i=2;i<=M;i++){ vector<int> E = {}; for(int j=1;j<D.size();j++) E.push_back((D[j-1]+D[j])*(D[j-1]+D[j])%(1<<i)); D = E; } cout<<D[0]<<endl; } }