結果
問題 | No.2752 文字列の数え上げ mod 998244353 |
ユーザー | 👑 p-adic |
提出日時 | 2022-10-02 21:55:41 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 74 ms / 2,000 ms |
コード長 | 1,591 bytes |
コンパイル時間 | 581 ms |
コンパイル使用メモリ | 69,700 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-20 04:11:36 |
合計ジャッジ時間 | 3,305 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 25 |
ソースコード
#include <iostream> #include <string> #include <stdio.h> #include <stdint.h> using namespace std; using ll = long long; #define UNTIE ios_base::sync_with_stdio( false ); cin.tie( nullptr ) #define CIN( LL , A ) LL A; cin >> A #define TYPE_OF( VAR ) remove_const<remove_reference<decltype( VAR )>::type >::type #define FOR( VAR , INITIAL , FINAL_PLUS_ONE ) for( TYPE_OF( FINAL_PLUS_ONE ) VAR = INITIAL ; VAR < FINAL_PLUS_ONE ; VAR ++ ) #define REPEAT( HOW_MANY_TIMES ) FOR( VARIABLE_FOR_REPEAT , 0 , HOW_MANY_TIMES ) #define QUIT return 0 #define POWER( ANSWER , VAR , EXPONENT_REF , MODULO ) \ TYPE_OF( VAR ) ANSWER = 1; \ TYPE_OF( VAR ) VARIABLE_FOR_SQUARE_FOR_POWER = VAR; \ while( EXPONENT_REF != 0 ){ \ if( EXPONENT_REF % 2 == 1 ){ \ ANSWER = ( ANSWER * VARIABLE_FOR_SQUARE_FOR_POWER ) % MODULO; \ } \ VARIABLE_FOR_SQUARE_FOR_POWER = ( VARIABLE_FOR_SQUARE_FOR_POWER * VARIABLE_FOR_SQUARE_FOR_POWER ) % MODULO; \ EXPONENT_REF /= 2; \ } \ #include <cassert> #define MAIN main int MAIN() { UNTIE; constexpr const ll bound_T = 100000; CIN( int , T ); assert( 1 <= T && T <= bound_T ); constexpr const ll P = 998244353; constexpr const ll c = 26; constexpr const ll c_minus_inv = 319438193; constexpr const ll coef = ( c * c_minus_inv ) % P; constexpr const ll bound_Lt = 1000000000000000000; ll Lt; REPEAT( T ){ cin >> Lt; assert( 1 <= Lt && Lt <= bound_Lt ); POWER( answer , c , Lt , P ); answer = ( ( answer - 1 ) * coef ) % P; cout << answer << "\n"; } QUIT; }