結果
| 問題 |
No.2344 (l+r)^2
|
| コンテスト | |
| ユーザー |
keisuke6
|
| 提出日時 | 2023-06-07 22:08:53 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 776 bytes |
| コンパイル時間 | 2,071 ms |
| コンパイル使用メモリ | 199,244 KB |
| 最終ジャッジ日時 | 2025-02-13 23:15:42 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 2 WA * 10 |
ソースコード
#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) 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;
}
}
keisuke6