結果
問題 | No.2816 At Most Two Moves |
ユーザー | makichan |
提出日時 | 2024-07-19 22:02:38 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 4 ms / 2,000 ms |
コード長 | 1,186 bytes |
コンパイル時間 | 5,625 ms |
コンパイル使用メモリ | 311,368 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-19 22:02:46 |
合計ジャッジ時間 | 6,409 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 25 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> using mint = atcoder::static_modint<998244353>; //using mint = atcoder::static_modint<1000000007>; using namespace std; using namespace atcoder; using ld = long double; using ll = long long; #define mp(a,b) make_pair(a,b) #define rep(i,s,n) for(int i=s; i<n; i++) const vector<int> dx{1,0,-1,0},dy{0,1,0,-1}; template<typename T> void compress(vector<T>&a, bool is_unique=false){ auto b=a; sort(b.begin(),b.end()); if(is_unique){ auto p=unique(b.begin(),b.end()); b.erase(p,b.end()); } for(auto&x:a)x=lower_bound(b.begin(),b.end(),x)-b.begin(); } int main(){ int T; cin >> T; vector<mint> out; rep(t,0,T){ ll n; cin >> n; if(n==2){ out.push_back(3); continue; } if(n==1){ out.push_back(1); continue; } mint ans=0; mint p=mint(3)/4; mint h=mint(2).inv(); ans=1-p.pow(n-2); ans++; ans*=h; ans*=(n-1); ans++; ans*=mint(2).pow((n-1)*n/2); out.push_back(ans); } for(auto x:out)cout << x.val() << "\n"; }