結果
| 問題 |
No.2752 文字列の数え上げ mod 998244353
|
| コンテスト | |
| ユーザー |
rieaaddlreiuu
|
| 提出日時 | 2024-05-22 17:42:13 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,127 bytes |
| コンパイル時間 | 1,687 ms |
| コンパイル使用メモリ | 171,276 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-12-20 18:29:45 |
| 合計ジャッジ時間 | 4,071 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 1 WA * 24 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
//2進変換
//O(log N)
vector<int> decimal_to_binary(long long N){
vector<int> result;
while(N != 0){
result.insert(result.begin(),N%2);
N = N/2;
}
return result;
}
//a^n mod pの高速計算
//O(log p)
long long calc_modulo(long long a,long long n,long long p){
a = a%p;
n = n%(p-1);
vector<int> binary = decimal_to_binary(n);
long long x = a;
long long result = 1;
int N = binary.size();
for(int i=0;i<N;i++){
if(binary[N-1-i] == 1){
result = (result * x)%p;
}
x = (x*x)%p;
}
return result;
}
// mod. m での a の逆元 a^{-1} を計算する
//O(log m)
long long modulo_inverse(long long a, long long m) {
long long b = m, u = 1, v = 0;
while (b) {
long long t = a / b;
a -= t * b; swap(a, b);
u -= t * v; swap(u, v);
}
u %= m;
if (u < 0) u += m;
return u;
}
int main(){
long long result,L,p=998244353;
int T;
cin >> T;
for(int i=0;i<T;i++){
cin >> L;
result = (modulo_inverse(25,p) * (calc_modulo(26,T+1,p)-1) -1)%p;
cout << result << endl;
}
}
rieaaddlreiuu