今日は、質問を参照するには荒れた海での釣り:
これは、あなたの裸の簡単な質問の力ではないでしょうか??
そして、データ範囲を見て:
???Bのこの範囲は、私をおびえさせます。
いくつかの研究の後、最初の研究この質問は以下のとおりです。
オイラーの定理はオイラーの定理を拡張します&
証明結論に直接進んでください:
(图源OI wiki)
だから、この質問は、最初のオイラーの関数に対処した後、オイラーに従って解決拡大することです。するBを注意モジュロ入力側を左右。
オイラーは、関数を扱います:
画面と同様の線形プライム、あなたはよく理解、標準的なプロセスを見ることができます。
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 typedefの長い 長いLL。 4 CONST LL M = 1E6 + 10 。 5つの LLのANS [M]、PHI [M]。 6 LLのCNT。 7 のLL M、B。 8 ボイドEulersieve(){ 9つの PHI [ 1 ] = 1 。 10 のために(LL I = 2 ; I <= M; iが++ ){ 11 であれば(!PHI [i])と{ 12 のための(J + =; J <= MのLL J = {I) 13 もしPHI [j]が=(PHI [j]が!)J。 14の PHI [j]は= PHI [J] / Iは、(I-* 1 )。 15 } 16 } 17 } 18 } 19が 読み出さ11(){ 20 LL X = 0、F = 1 。 21 チャー C = GETCHAR()。 22 ながら(!isdigit(C)){ 23 であれば(C == ' - ')、F = - 1 。 24 C = GETCHAR()。 25 } 26 しばらく(isdigit(C)){ 27 、X = X * 10 + C- ' 0 ' 。 28 C = GETCHAR()。 29 } 30 リターンのx *のF。 31 } 32 LL getb(){ 33 LL X = 0、フラグ= 0 。 34 チャー C = GETCHAR()。 35 ながら(!isdigit(C)){ 36 C = GETCHAR()。 37 } 38 ながら(isdigit(C)){ 39 、X =(X * 10+ C- ' 0 ' )。 40 であれば(X> = PHI [M]){ 41 、フラグ= 1 。 42 X%= PHI [M]。 43 } 44 C = GETCHAR()。 45 } 46 場合(X> = PHI [M]){ 47 、フラグ= 1 。 48 X%= PHI [M]。 49 } 50 リターンフラグ== 1 X +?PHI [M]:X。 51 } 52 LLのQP(LL N、LLのP){ 53 LL RES = N、ANS = 1 。 54 一方、(P){ 55 であれば(P&1 ){ 56の ANS =(RES * ANS)%のM。 57 } 58の RES =(RES * RES)%のM。 59 P >> = 1 。 60 } 61の リターンANS。 62 } 63 、INT (){主 64 = 読み取りを(); 65 、M = )(読み取ります。 66 Eulersieve()。 67 B = getb()。 68 のprintf(" %のLLD " 、QP(b)参照)。 69 リターン 0 ; 70 }