@codeforces - ここでも期待値@ 1205E


@説明@

与えられた二つの数をn、kは、sがランダムな文字列セットのサイズkとします。

Fの定義(S)iは長サフィックス項1≤iは<iのiの数を接頭辞の長さを満たすのS = Sを表し、| |です。

シークF(S)^ 2が望まれます。

入力
N 2つの整数を含むだけ1本のライン、K(1≤n≤10^ 5、 1≤k≤10^ 9)、 上記のように意味します。

出力
出力が望ましいのmod 10 ^ 9 + 7。

例として
、入力
2 3
出力
333333336

入力
1 5
出力
0

入力
100 1つの
出力
9801

入力
10 10
出力
412377396

@溶液@

@パート1@

サフィックスが前記対象に等しくなる前に、実際に、それは、境界の数です。
Nに相当する長さの境界長kので、K -ピリオド、以下の説明を容易にするために、我々は、サイクル数を計算することを望みます。

考え確率変数をしてみましょう\(G_i(S)\) 期間の長さは、私を含む場合、sは1、そうでなければ0です。
得ることができる\(F(S)= \ sum_ = {I} 1 1} ^ {N - G_i(S)\) すなわち、各期間長の寄与を考慮します。
次いで、得られる\(E(F(S) (^ 2)= \ sum_ {i = 1} ^ {N-1} \ sum_ {J = 1} ^ {N-1} E(g_i(S)* g_j S))\) この計算の線形な性質が望ましいかもしれません。

検討\(E(g_i(S) * g_j(S))\) iが期間jの確率で両方の長さを有するサイクルの長さにほぼ等しいです。
結論がある:\(Eは、(G_i(S)* G_J(S))=(\ FRAC {1}、{K})^ {N - MAX(IはJN、GCDを+ \(I、J))} \ )私は、部分的に証明する- 3与えられました。
次に、この結論の前提の場合、解決への答えを考えます。

@パート2@

上記の考え方によると、私たちはお願いしたいと思います\(\ sum_ {i = 1 } ^ {N-1} \ sum_ {J = 1} ^ {N-1}(\ FRAC {1} {K})^ { N - \最大} \)(IはGCD(I、J)、JN + 1)

それだけでこの式に注意してください\(S = I + J、 D = GCD(i、j)は\) に関連するが、理由は(| S \ D)\、タプルの数(D、S)がないので、 O(nlog n)が(高調波シリーズ)より。
我々は、(i、j)を満足するの数に基づいて計算された各対(D、S)のための試み\(S = I + J、GCD(I、J)= D \)

以降\(GCD(I、S)= GCD(I、S - I)= GCD(I、J)= D \)(GCDの性質に応じて)、そうjは、実際に私を取る唯一の制約は重要ではありません値の範囲。
我々は、1 <= l <= N-満足Iの数カウント必要 1 及び1 <= Sを- I <= N-1 \(GCD(S、I)= D \)

不平等直接解決策は、それがとにかくソリューションの間隔でなければなりません。あなただけが考慮する必要があります\(GCD(S、I) = dは\) ケースを。
この理論は、メビウスの反転を使用しますが、実際には私はちょうど数降順押して、毎回満足P I列挙| P | Sを、その答えは、私は、pの包含と除外の外に答えます。計算を下降するので、処理は、私は、特定のプロセス実行に対応するPに対する回答を修正します。

時間の複雑さをi | P |ラフ分析をしなければならない、などの数を3倍(O(N ^ログ\ \ 2N)を\) レベル。

@part - 3 @

我々は正式に証明する方法を検討\(E(g_i(S) * g_j(S))=(\ FRAC {1} {K})^ { - \最大(私はJNを+、GCD(i、j)は)は、n}を\) 。

最初の組み込み図n点、長さxのサイクルがある場合、すべてのエッジとの接続(Y、Y + X)。
ダウンので、必ずしも同一の通信ブロックの同一の値を接続されています。通信ブロックの数をcとすると、その後、K ^ C異なる文字列の合計が存在するであろう。
及びK ^の列の総数はNため、その後の確率は\(\ FRAC {K ^ C }、{K ^ N} =(\ FRAC {1} {K})^ {NC} \)

まず、iがjは+ <= N、補題弱い周期に従って、周期の(i、j)は、Cを連通ブロックの数= GCDがGCDなければならない(WC検索文字列のKinzer教材する見つけることができる)は、(i 、J)。
私はJ <時間= N GCD(i、j)は+のでそして nは、 - > 0> =私はJ + ので、私たちの答えは正しい式を。

次に、私は+ jが> nで、一般性を失うので、私> jを検討してください。そして、私は+ jが> nであるため、I> Nとなるよう- J。
まず、すべての(Y + I Y)も、iがNエッジの長さによって接続され、元の解像度のサイクルを考えます。全ての位置で0 ... I-1であっても私のいくつかのうち、通信ブロックの数、及び長さのサイクルを表すI(これは、0から番号付けされていることに注意)。
この通信は、I-1 ...通信を遮断する位置で長さのサイクルiは0番号が付されているブロックに示すプレスかもしれません。

J、私たちも(Z、(Z + J) -次、0 <= Z <Nの各々に対して MOD I)。jは<I - N <そのZに注意してください。
ケースのエッジの各添加は、ブロックの数が通信を低減するように環を形成しません。しかし、リングを形成する場合、結論は確立されていません。
しかし、たとえ上記の事実の側面図は、ポリAテンプレートをやっての最初の部分の順列、および交換のこのタイプの形成がの本質を問うためにそれを使用する:
(1)究極の形の複数のリングであれば、すべてのサイズのリングをしなければなりませんI / GCD(i、j)があります 。
加え(Z、(Z + J)と(2) MOD i)は環を形成し、その後、すべてのエッジのその後の環を形成するために添加されます。
したがって、我々は結論することができる:環を形成する場合、必ずしもGCD(I、J)は、C連通ブロックの数、及びZは、第一のリング= Iで形成されている- GCD(I、J )。

従って、もしZ = I - GCD(I、 J)<N - J、 即ち、iがJ + - N <GCD( i、j)を、 次いでC = GCD(i、j)と 、 それ以外の場合、C = I - (N - J)=私はjは+ - N 。
この時点で、私たちの結論は、完成したことを証明します。

@溶液@

#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
const int MAXN = 100000;
const int MOD = int(1E9) + 7;
int gcd(int a, int b) {
    return (b == 0) ? a : gcd(b, a % b);
}
int pow_mod(int b, int p) {
    int ret = 1;
    while( p ) {
        if( p & 1 ) ret = 1LL*ret*b%MOD;
        b = 1LL*b*b%MOD;
        p >>= 1;
    }
    return ret;
}
int n, m, k, ans;
void update(int d, int s, int p) {
    ans = (ans + 1LL*p*pow_mod(k, MOD - 1 + max(s - n, d) - n)%MOD)%MOD;
}
vector<int>dv[2*MAXN + 5];
void init() {
    for(int i=1;i<=m;i++)
        for(int j=i;j<=m;j+=i)
            dv[j].push_back(i);
}
int f[2*MAXN + 5];
int main() {
    scanf("%d%d", &n, &k), m = 2*(n - 1);
    init();
    for(int s=1;s<=m;s++) {
        int l = max(1, s - (n - 1)), r = min(n - 1, s - 1);
        for(int j=dv[s].size()-1;j>=0;j--) {
            int d = dv[s][j], p = s / d;
            f[d] = r / d - (l - 1) / d;
            for(int k=1;k<dv[p].size();k++)
                f[d] = (f[d] + MOD - f[d*dv[p][k]])%MOD;
            update(d, s, f[d]);
        }
    }
/*
    for(int i=1;i<=n-1;i++)
        for(int j=1;j<=n-1;j++)
            update(gcd(i, j), i + j, 1);
*/
    printf("%d\n", ans);
}

@詳細@

E元DIV1水そう。

それは非常にゆっくり走るので、私はベクトルを使用しているためのように。
しかし、わからない、多分私は時間の複雑さが誤って何か奇妙なことについての詳細を書くかもしれません。

おすすめ

転載: www.cnblogs.com/Tiw-Air-OAO/p/11402012.html