POJ 1286 && poj2409ポリアのカラーマッチング数

オリジナルリンク: http://www.cnblogs.com/zhangying/p/3993515.html
書式#include <iostreamの> 
書式#include <math.h>の使用して名前空間はstdを、#define LL長い長
LLのGCD(LL、LL b)は
{ 戻り B?GCD(B、%のB)。
} 
LLのポリA(LL n)で
{ 
    LLのRET = 0 (LL i = 0 ; iがn <I ++の
        RETが + = POW(3 、GCD(I、N))。
    // それらを反転... あれば(N - 1// 奇数 
        RET + = N * POW(3、N / 2 + 1

 


    

    ); // 対称軸のNUMは、n、及び(N + 1)/ 2のサイクル、2の長さ、及び1 ...他の長さの2サイクルである// もRET + = N / 2 * POW(3 、N / 2)+(N / 2)* POW(3、N / 2 + 1)。// 対称軸のnumがbeedを通して、彼らは(N / 2-1)2の長さを有するサイクルと1の長さの2サイクルを形成されたn / 2軸について、beedsによってcategoried、Nであり; beedを通して、彼らが形成されていないN / 2軸2の長さ(N / 2)サイクルの
    //  
   RET + = N / 2 * POW(3、N / 2)+(N / 2)* POW(3、N / 2 + 1)。//
 
    戻り RET / N / 2 ; // (ポリア定理に従う。)、それらの平均
} 

int型のmain()
{ 
    LL N。
    一方 - (!CIN >> N && N = 1 
    { 
        場合(N <= 0)COUT << 0 << ; ENDL
        他の coutの<<ポリA(n)が<< てendl; 
    } 
    戻り 0 
}
#include <iostreamの> 
する#include <cstdioを> 
する#include <cstdlib> 
の#include <CStringの> 
する#include <cmath> 使用して名前空間STD。
#define N 3 
__int64 M。int型 GCD(INT A、INT B)
{ 
    B = Bの%一方、(B)
    { =%のB; 
        スワップ(A、B)。
    } を返します
} int型のmain()
{ 一方(scanf関数(" %のLLD "

 



    


    !、&M)= EOF)
    { 
        場合(Mの== - 1 ブレーク
        __int64 ANS = 0 int型 iは= 1 ; I <= M; iが++ 
            ANS + = POW(N * 1.0、GCD(I、M)* 1.0 )。
        もし(M 1 
            ANS + = M * POW(N * 1.0、(M / 2 + 1)* 1.0 )。
        
            ANS + = M / 2 * POW(N *1.0、(M / 2)* 1.0)+ M / 2 * POW(N * 1.0、(M / 2 + 1)* 1.0 )。
        ANS / = M * 2 
        printf(" %I64dの\ n " 、ANS)。
    } 
    戻り 0 
}

 

ます。https://www.cnblogs.com/zhangying/p/3993515.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_30698297/article/details/94796223