結果
問題 | No.2994 べき内積 |
ユーザー |
|
提出日時 | 2024-12-25 11:12:56 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 66 ms / 2,000 ms |
コード長 | 914 bytes |
コンパイル時間 | 2,289 ms |
コンパイル使用メモリ | 107,632 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-12-25 11:13:01 |
合計ジャッジ時間 | 4,082 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
ソースコード
#include<iostream>#include<vector>#include<cassert>#include<atcoder/modint>#include<atcoder/convolution>using namespace std;const int p=1009;using mint=atcoder::static_modint<p>;int M,N;int K[4<<17];mint A[2000];vector<mint>conv(vector<mint>a,vector<mint>b){vector<long long>L(N+1),R(N+1);for(int i=0;i<=N;i++)L[i]=a[i].val();for(int i=0;i<=N;i++)R[i]=b[i].val();auto M=atcoder::convolution_ll(L,R);vector<mint>ret(N+1);for(int i=0;i<=N;i++)ret[i]=mint(M[i]);return ret;}int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cin>>M>>N;for(int i=0;i<=M;i++)cin>>K[i];int sum=0;for(int i=2;i<=M;i++)sum+=K[i];for(int i=0;i<=N;i++){int a;cin>>a;A[i]=a;}vector<mint>a(N+1);a[0]=A[0].pow(sum);vector<mint>b(A,A+N+1);int t=K[0]+K[1]*p;while(t){if(t&1)a=conv(a,b);t>>=1;b=conv(b,b);}for(int i=0;i<=N;i++)cout<<a[i].val()<<(i==N?"\n":" ");}