魔法
まず、オリジナルのスタイル指数は確かに$長い$ $ $長く爆発的になります
まず、式オイラーの定理によれば、我々は置き換えることができ、元の$ N ^ {\和\ limits_ {i = 1} ^ {iが<= N} [GCD(I、N)== 1] C_ {G} ^ {I } \%PHI(P)} \%P $
得られた生成物は$ PHI(54184622)のオイラー関数PHI(2)* PHI(27092311)$を=です
次に$ PHI(27092311)= 27092310 $ $ PHI(2)= 1 $ $ PHIので(54184622)= 27092310 $
私たちは、今記載され$ N ^ {\和\ limits_ {i = 1} ^ {iが<= N} [GCD(I、N)== 1] C_ {G} ^ {I} \%27092310} \ %pが$
$2709.231万= 2 * 3 * 5 * 7 * $ 129011と組み合わせの数を求めているCRT裸ボード$要求が終了されるだろう$
注:プリ階乗と逆、またはアウトの時間を持っています
#include <ビット/ STDC ++ H> の#defineは長い長いっ #defineし 333333 のLL K、P、N、Gと、 // PHI(54184622)= 27092310 // 27092310 = 2 * 3 * 5 * 7 * 129011 LL W [ 7 ] = { 0、2、3、5、7、129011、54184622 }、傑[ 6 ] [A] 、NI [ 6 ] [A]、DL [A]、B [A]。 LLのexgcd(LLのB -1,11,11-&X、LL&Y){ 場合(Bの== 0 ){ X = 1 ; Yは= 0 ; リターンA; } LL GCD = exgcd(B、%のB、X、Y)。 LLさt =のX。 X = Y。 Y = TA / b *表Y。 リターンGCD。 } LL孟(LLのX、LL kを、LLのCIX){ LL ANS = 1 。 用(; kは、kは>> = 1、X = X * X%[CIX] w)の 場合(K&1 ) ANS = ANS * X%[CIX、W。 戻るANSを。 } LL中国(){ LLのX、Y、A = 0、M、N = 1 。 にとって(LL i = 1 ; iが= < 5 iは++; ) N * = W [i]は、 用(LL i = 1 ; iが= < 5、iが++ ){ M = N / [I] W。 exgcd(W [i]は、M、X、Y)。=(+ yを×m個の*のB [I])%N。 } 場合(A> 0)を返します。 返す + N; } LLのGCD(LLのX、LLのY){ 場合(Yの== 0)リターンX。 戻り GCD(Y、Xの%のY)。 } LL JIC(LL N、LLのM、LLのCIX){ もし(M> N)戻り 0 ; もし(M == 0)リターン 1 。 戻り傑[CIX] [N] [CIX] * NI [CIX] * NI [CIX] [M]%W [CIX] [nm]の重量%%[CIX] Wは、 } LLのルーカス(LL N、LLのM、LL CIX){ 場合(N == 0)リターン 1 。 戻り(CIX、[CIX] W N [CIX] W%、m個%)JICを*ルーカス(N / W [CIX]、M / W [CIX]、CIX)%[CIX、W。 } 使用して 名前空間STDを、 INT メイン() { scanf関数(" %のLLDの%のLLD "、&N、&G)。 用(LL I =1 ; iが=分(G、N)<; Iは++ ){ 場合(GCD(I、N)== 1 ) DL [ ++ DL [ 0 ] = I。 } の場合(I = 11 1 ; iは= < 5 ; iは++ ){ サボ[I] [ 0 ] = 1 ; NI [I] [ 0 ] = 1 。 用(J = 11 1 ; J <W [i]は、J ++ ) サボ[I] [J] =サボ[i]は[J- 1 ] * J%のW [i]は、 NI [I] [I]、[W - 1 ] =孟(サボ[I] [I] W - 1 ]×[I] -2 、I)。 用(LL J = W [I] - 2 ; J> = 1 ; j-- ) NI [I] [J] =のNI [I]、[J + 1 ] *(J + 1)%W [i]は、 用(LLのJ = 1 ; J <= DL [ 0 ]; J ++ ) (B [I] + =ルーカス(G、DL [j]は、i))を(%)= [I] W。 } LL J = 中国()。 LLのK =孟(N、J、6 )。 COUT << K << ENDL。 // 模「私は」B「私は」剩余W }