問題の意味:ランダムNから生成されたN、[1、N]が与えられます
その後、nはランダムに生成された数の完全な置換は、逆蓄積及びANSの数の数nを求め、
998 244 353このことは、次にランダム配列の完全な配列を取り出し、このプロセスが空になるまで繰り返され、ANS所望下型を見つけます
考える:手だけプッシュ式に長さに関連する期待
私は一般的な用語の式があることを聞きました
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 typedefの長い 長いLL。 4符号なしのtypedef int型 のuint ; 5 typedefの符号なしの長い 長いULL。 6のtypedef対< INT、INT > PII。 7のtypedef対<-1,11,11-> PLL。 8 typedefのベクトル< int型 > VI。 9 の#define N 110000 10 の#define M 1100000 11 の#defineFiの第 12 の#define SE第 13 の#define MPがmake_pair 14件 の#define PIのACOS(-1) 15 の#define MEM(A、B)のmemset(A、B、はsizeof(A)) 16 の#define(REPをI、 B)は(INT I =(INT); iが<=(INT)B; I ++) 17 の#defineあたり(iは、b)のための式(I =(INT INT); iが> =(INT)B ; i--) 18 の#define lowbit(x)は、x&( - X) 19 の#defineランド(RAND()*(1 << 16)+ランド()) 20 の#define ID(X)((X)<= B(X):MN /(X)+1) 21 の#define LS P << 1 22 の#define RS P << 1 | 1 23 24 CONSTLL MOD = 998244353、INV2 =(MOD + 1)/ 2 。 25 二重 EPS = 1E- 6 。 26 LL INF = 1E14。 27 28 LLのFAC [N]、INV [N]、DP [N]、MI [N]。 29 30 LL PW(LLのX、LLのY) 31 { 32 のLL T = 1 。 33 一方、(Y) 34 { 35 であれば(Y&1)T = T * X%MOD。 36 X = X * X%MOD。 37 Y >> = 1 。 38 } 39 リターントン。 40 } 41 42 int型リード() 43 { 44 のint = V 0、F = 1 。 45 チャー C = GETCHAR()。 46 一方、(C < 48 || 57 <C){ もし、(C == ' - ')、F = - 1。C = GETCHAR();} 47 ながら(48 <= C && C <= 57)V =(V << 3)+ V + V + C- 48、C = GETCHAR()。 48 リターンV * F; 49 } 50 51 LL計算値(LLのN) 52 { 53 のLL T = N *(N- 1)/ 2 。 54 リターン T *のINV2%のMOD。 55 } 56 57 のLL C(LL N、LLのM) 58 { 59 であれば(N <M || M < 0)戻り 0 ; 60 のLL T = FAC [N] * INV [M]%MOD * INV [nm]の%MOD。 61 リターンT。 62 } 63 64 のint main()の 65 { 66 // freopenは( "1.in"、 "R"、STDIN)。 67 // freopenは( "1.out"、 "W"、STDOUT); 68 INT N。 69 FAC [ 0 ] = 1 。 70 担当者(I、1、3000)FAC [i]は= FAC [I- 1 ] * I%MOD。 71の INV [ 0 ] =装置INVは、[ 1 ] = 1 。 72 担当者(I、2、3000)INV [I] =装置INV [MODの%I] *(MOD-MOD / I)%MOD。 73 担当者(I、1、3000)INV [I] = INVを[I- 1 ] * INV [I]%モッド; 74 マイル[ 0 ] = 1 。 75 担当者(I、1、3000)MI [I] = MI [I- 1 ] * INV2%MOD。 76 担当者(I、1、3000 ) 77 { 78 のLL T = 0 。 79 担当者(J、1、I- 1)T =(T + DP [J] * C(i、j)の%MOD * MI [I]%MOD)%MOD。 80 DP [I] =(計算値(I)+ T)%MOD * PW(1LL-MI [I] + MOD、MOD- 2)%MOD。 81 } 82 担当者(I、1、3000)DP [I] =(DP [I] + DP [I- 1 ])%MOD。 83の INV [ 0 ] =装置INVは、[ 1 ] = 1 。 84 担当者(I、2、3000)INV [I] =装置INV [MODの%I] *(MOD-MOD / I)%MOD。 85 一方(scanf関数(" %のD "、&N)=!EOF) 86 { 87 のprintf(" %I64dの\ n "、DP [N] * INV [N]%MOD)。 88 } 89 リターン 0 。 90 }