結果
問題 |
No.3045 反復重み付き累積和
|
ユーザー |
![]() |
提出日時 | 2025-02-28 22:06:09 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 922 ms / 5,000 ms |
コード長 | 696 bytes |
コンパイル時間 | 4,309 ms |
コンパイル使用メモリ | 258,404 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2025-02-28 22:06:23 |
合計ジャッジ時間 | 12,306 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 |
ソースコード
#include <stdio.h> #include <bits/stdc++.h> #include <atcoder/all> using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000000 #define Inf64 1000000000000000001LL int main(){ int n,q; cin>>n>>q; vector<mint> a(n); rep(i,n){ int t; cin>>t; a[i] = t; } rep(_,q){ int t; cin>>t; if(t==1){ int k,x; cin>>k>>x; mint aa = 1; mint bb = 1; vector<mint> y(n,1); for(int i=1;i<n;i++){ y[i] = y[i-1] * k * (x-1+i) * mint(i).inv(); } a = convolution(a,y); while(a.size()>n)a.pop_back(); } else{ int x; cin>>x; cout<<a[x-1].val()<<endl; } } return 0; }