コード力1228C

これは、数論+思考のタイトルバーに共通の問題です。

おそらくタイトルの意味は周りの多くの人がめまいです。

 

アイデア:

   まず、X素因数の正常な動作が得られます。

   その後、被験者が要求され、X各素因数P、G(I、P)乗法。i∈[1、N]。

   我々はない各G(I、P)は、次の思考を変換どのPの最終的な力が、結果の各Pの寄与の逆電力です。

   見かけ上、P ^発生回数をkは1〜N [N /(P ^ K)]です。

   このように、すべての素因数を列挙して、答えることができる高速なコンピューティング・べき乗剰余演算を使用して

// の#pragmaコメント(リンカー、 "/ STACK:1024000000,1024000000")
 // の#pragma GCC最適化(2) 
の#include <ビット/ STDC ++ H> 使用して名前空間STDを、
typedefを倍増DOU。
typedefの長い長いLL。
typedefのペア < int型int型 > PII。
マップのtypedef < int型int型 > MII; #define PAI ACOS(-1.0)
 の#define M 200007
 の#define INF 0x3f3f3f3f
 の#define MOD十億七
 の#defineインラインIN
 の#define

  

W(a)は(A)
 の#define lowbit(a)のA&( - A)
 の#define左のk << 1つ
 の#define右のk << 1 | 1
 の#define LSONのL、ミッド、左
 の#define rsonミッド+ 1、 R、右
 の#define MS(B)のmemset(A、B、はsizeof(A))
 の#define ABS(A)(^(>> 31)) - (>> 31)
 #defineするランダム(A 、B)(RAND()%(B + 1-A)+ A)
 の#define false_stdio IOS :: sync_with_stdio(偽)、cin.tie(0)、cout.tie(0)

LL X、N。
LL ANS = 1 
ベクトル <LL> NUM; 

無効{(TMP LL)INITの
     ための(LL I = 2 ; iは<= TMPを*; I ++){
         場合(TMPは、%I == 0 ){ 
            num.push_back(I)。
            W(TMPの%I == 0)TMP / = I。
        } 
    } 
    もし(!TMP = 1 )num.push_back(TMP)。
} 

LL捕虜(LL 塩基、SUP LL){ 
    LL和 = 1 
    W(SUP){ 
        場合(SUP&1)合計=(SUM * ベース)%MOD。
        SUP >> = 1 ;
        基地 =(ベース * ベース)%MOD; 
    } 
    戻り SUMの%のMOD; 
} 

int型のmain(){ 
    false_stdio; 
    CIN >> X N-、
    INIT(X)
    のための(オートP:NUM){ 
        LL TMP = 1 ; 
        Wは(TMP <= N / P ){ // 条件がTMPの* pとして理解されるべきである<= nであり、n%のP == 0、それは精密分割用いてブラストすることを防止することができる 
            TMPを* = P; 
            ANS =(ANS *パウ(P、N- / TMP))%MOD; 
        } 
    } 
    COUT << ANS << ENDL;
     戻り 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/caibingxu/p/11614128.html