UVA 10294のネックレスやブレスレット(交換)

バーンサイド補題:順列について\(F \) 着色スキーム場合\(S \)同一の交換後、という\(複数可\)である\(F \)固定小数点。\(F \)固定小数点の数は、と呼ばれる\(C(F)\) 次いで、等価クラスの数はとして示すことができる(C(F)\)\平均。

置換のための基の置換である\(Fは\)、\ (C(F)は、\)全ての実施形態では、置換後のそれらの着色されている\(F \)可能な数着色スキームを(即ち、当量)の交換

置換は複数のサイクルに分割することができるので、順列の各要素をノードとみなすことができ、度及び浸透性を有していなければならない各ノードは、それは確かに代わりに、複数のリングを形成することになる(\ Fを\)固定ポイントは、各リングに分解され、それらが置換によって相互に到達することができるので、色)が(同じでなければなりません。仮定するとサイクル数の順列部\(M(F)\) 次いで\(C(F)= K ^ {M(F)} \) kは着色の数です。

UVA 10294のネックレスやブレスレット

ポータル

劉Rujiaホワイトペーパー146

ポリA・カウント裸のタイトル

回転フリップ2個の置換、最初の交換のネックレスは、ブレスレットは両方を持っている、があります。ビーズは、0〜N-1の番号が付けられて配置されました。

回転:

回転変位モードのN-1種類の合計、すなわち、i番目のピッチビーズは、I回転は、その後数0ビーズから出発して、回転するように計算することができる\(LCM(I、N) / I \) 最初に行く回位置、その後の周期長(\ \ {N-FRAC} {GCD)(I、N-} \) 総変位合計\(GCD(I、N) \) サイクル、このような置換の回転、コンセンサス\(A = \ sum_ {I = 0} ^ {N-1} T ^ {GCD(I、N) } \)固定小数点

転倒

場合n(nは角形の頂点を望むことができる)が奇数である、対称軸は、nあり、各軸は、対称性を形成する\((N-1)/ 2 \) 長さ2、及び1の長さのサイクル、すなわち、(N + 1)/ 2サイクル。このような置換固定点の総数\(^ B = {NT \ FRAC +。1 {N-2}}} {\)

nが偶数である場合には、2つの対称軸があります。ビーズは、対称軸を通過している\(\ FRAC {n}は{ 2} \) ストリップを、各々が形成された(N / 2-1 \)\ 2サイクルの長さ及び1、2の周期長を有する、ない摩耗ビーズを通る対称軸である\(\ FRAC {N-2}} {\) 各成形\(N / 2 \)の長さの2サイクル。このような固定点としての置換の総数\(B = \ FRAC {N } {2}(T ^ {N / 2 + 1} + T ^ {N / 2})\)

const int N = 50 + 5;

int n, t;
ll power[N];
ll gcd(int a,int b){
    return b == 0 ? a : gcd(b, a % b);
}
int main() {
    while(scanf("%d%d",&n,&t) == 2 && n){
        power[0] = 1;
        for (int i = 1; i <= n;i++)
            power[i] = power[i - 1] * t;
        ll a = 0;
        for (int i = 0; i < n;i++)
            a += power[gcd(i, n)];
        ll b = 0;
        if(n % 2 == 1){
            b = n * power[(n + 1) / 2];
        }else
            b = n / 2 * (power[n / 2 + 1] + power[n / 2]);
        cout << a / n << ' ' << (a + b) / 2 / n << endl;
    }
    return 0;
}

おすすめ

転載: www.cnblogs.com/1625--H/p/12333003.html