問題の意味
ネックレスやブレスレットはネックレスをブレスレットを逆にすることができることを除いて、宝石を張ら環状複数のビーズで作られたが、されていません。
N-入力整数$ $ $ T $、とは、出力色$ T $ $ $ N-ビーズの数とネックレスやブレスレットにすることができます。($ 1 \当量のn \の当量50、1 \当量T \当量10 $)。
分析
回転と反転、ここで2個の置換、一つだけのネックレス、ブレスレットとの両方を持っているがあります。
回転:間隔が反時計$ I $ビーズ、$ 0回転させると(金型は$ $ $ N-N- $よりも大きい場合)、I、2I、... $一の周期を構成し、このサイクルは、$ N / GCD(Iを有しますn)と$の要素。対称性によって、各サイクルの長さが等しく、それは、$ GCD(I、N)$サイクルです。固定小数点数の合計は、$ A = \ sum_ {T = 0} ^ {N-1} T ^ {GCD(I、N)} $置換されています。
フリップ:
N- $ $が奇数の場合、対称軸$ $ n個、対称$の各構成の軸がある(N-1)/ 2 $ 2サイクルの長さとサイクル1の長さ、すなわち、$(N + 1)/ $ 2サイクル。このような置換固定小数点の$ B = NT ^ {\ FRAC {N + 1} {2}} $の総数。
ときのn $ $が偶数、2つの対称軸です。ビーズを通る対称軸は$ N / 2 $ストリップ、それぞれ形成された$ N / 2-1長さ2の各サイクルの$、ループ1の2つの長さであり、対称軸は、ビーズを通過しないである$ N / 2 $ストリップ長さのそれぞれに形成さ$ N / 2 $ 2サイクル。そのような置換基の総数は、点$ B = \ FRAC {n}は{2}(T ^ {N / 2 + 1} + T ^ {N / 2})$を修正します。
ポリA定理は、等価クラスの数は、全点の平均値に等しくありません。したがって、ネックレス$ A / N $の総数は、ブレスレットは、$(A + B)/ 2N $を合計します。
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 typedefの長い 長いLL。 CONSTの INT MAXN = 50 + 5 。 LLのP [MAXN]。 int型 GCD(INT A、INT B) { 戻り Bの== 0?A:GCD(B、%のB)。 } int型のmain() { int型N、T。 一方、(scanf関数(" %d個の%のD "、&N、&T)== 2 && N) { P [ 0 ] =1 ; 用(int型 I = 1 P [I] = P [1-; iが<= N I ++)は1 ] * T。 LLのA = 0 。 以下のために(int型 i = 0 ; iがn <; iは++)、A + = P [GCD(I、N)]。 LLのB = 0 。 もし(N - 1)B = N * P [(N + 1)/ 2 ]。 他 B = N / 2 *(P [N / 2 + 1 ] + P [N / 2 ])。 printf("%LLD%LLD \ n "、/ N、(A + B)/(2 *のN)); } 戻り 0 ; }