説明
「単純な無向グラフ」図(必ずしも通信に)非環を含まない、非エッジ重みを指します。
図値は、各点kと度の電源を参照して定義されました。
所与のn及びk、くださいすべての基準点との単純な計算と図の和のn値。
998244353モジュロ出力の偉大な答えは、ので。
入力
最初の行は2つの正の整数N、K(1 <= N <= 10 ^ 9,1 <= K <= 200000)を含有します。
出力
出力線整数、モジュロ998 244 353の結果に、すなわち解答。
サンプル入力
6 5
サンプル出力
67584000
#include <ビット/ STDC ++ H> に#define MS(X)のmemset(X、0、はsizeof(X)) の#define SWS IOS :: sync_with_stdio(false)を 使用して、 名前空間STD。 typedefの長い 長いLL。 const int型 MAXN = 4E6 + 5 。 constの ダブル PI = ACOS( - 1.0 )。 constの LL MOD = 998244353 ; /// 通常情况下的模数、 CONSTのLL G = 3。/// 模数的原根998244353,1004535809,469762049 LL qpow {(LL N、LLのP LL) LL ANS = 1 。 同時に(N){ 場合(N - 1)ANS = ANS *%のP。 N >> = 1 。= A *%のP; } 戻りANS。 } int型REV [MAXN]。 ボイド NTT(LL []、int型 nは、INT LEN、int型PD){ REV [ 0 ] = 0 ; 用(int型 i = 1 ; iがN <; Iは++ ){ REV [I] =(REV [I >> 1 ] >> 1 |((I&1)<<(len- 1))); IF(Iは< 改訂[I])スワップ(A [I]、A [改訂[I]); } のための(INT MID = 1 MID <N-; MID = << 1 ){ のLL Wnを qpow =(G、(mod- 1)/(MID * 2)、MOD); /// 原始根の根部の代わりに IF(PD == - 1)qpowの= Wnを(mod-のWnは2、MOD); / //は逆の逆要素に変換 するための(INT J = 0 ; J <N- = J + 2 * {MID) LL W = 1 ; のための(INT K = 0; K <中間あり、k ++ ){ LLのX = [J + k]は、yは* W = [J + K +中間]%MOD。 [J + K] =(X + Y)%MOD。 [J + K +中間] =(X-Y + MOD)%MOD。 W = W * WN%MOD。 } } } もし(PDの== - 1 ){ LL INV = qpow(N、mod- 2 、MOD)。 以下のために(int型 i = 0 ; iがn <; iは++ ){ [i]は = [I] * INV%MOD。 } } } [MAXN]、B [MAXN] LL、[MAXN] C。 ボイド解く(int型のn、int型M){ int型 LEN = 0、最大= 1 。 一方、(アップ<= N + M)まで<< = 1、lenの++ 。 NTT(アップ、LEN、1 )。 NTT(B、アップ、LEN、1 )。 以下のために(int型 i = 0 ; iが最大<; I ++)はCを[I] = 1LL * [I] * B [i]は%MOD。 NTT(最大C、LEN、 - 1 )。 } LL FA [MAXN]。 LL SUF [MAXN]。 INT {main()の LL N、K。 SWS; CIN >> N >> K。 FA [0 ] = 1 ; 用(LL i = 0 ; iは= Kを<Iは++ ){ int型、T = 1 。 もし(!I = 0)FA [I] = FA [I- 1 ] * I%MOD。 もし(I&1)T = - 1 。 [I] =のT *のqpow(FA [i]は、mod- 2、MOD)%MOD。 [I] =([I] + MOD)%MOD。 B [i]は = qpow(I、K、MOD)* qpow(FA [i]は、mod- 2、MOD)%MOD。 } (k、k)を解きます。 LL ANS = 0 。 アップLL =分(K、N- 1 )。 LL SUF = 1 。 以下のために(int型 i = 0 ; iが<=最大、iは++ ){ ANS =(ANS + SUFの* cを[I]%のMOD * qpow(2、N- 1 -i、MOD)%のMOD)%MOD。 SUF = SUF×(N- 1 -i)%MOD。 } ANS = ANS * qpow(2、(N- 1)*(N- 2)/ 2、MOD)%MOD * N%のMOD。 coutの << ANS << てendl; }