結果
| 問題 |
No.2816 At Most Two Moves
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 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";
}