1 条题解

  • 0
    @ 2025-9-14 20:10:15

    首先 f0=0f_0=0,然后特判 k≤1k \le 1 的情况。

    直接建立一张有向图,i→kii \to ki 表明 fif_i 能唯一确定 fkif_{ki},由于所有点的出度为 11,这张图一定是若干个 $a \to b \to \ldots \to m \to n \to \ldots \to z \to m \to \ldots$ 的 ρ\rho 形(实际上是若干个环),庶出 ρ\rho 形的个数 xx,答案即为 nx−1n^{x-1},因为 nn 个 ρ\rho 形起点处的 ff 值唯一确定了整个序列,并且 f0=0f_0=0。

    实际上,进一步的分析表明,求出 kk 对 pp 的阶 δp(k)\delta_p(k),答案即为 nn−1δp(k)n^{\frac{n-1}{\delta_p(k)}}。

    #include <bits/stdc++.h>
    using namespace std;
    const int P = 1e9 + 7;
    int power(int b, int k)
    {
        if (k == 0) return 1;
        if (k == 1) return b;
        long long s = power(b, k >> 1);
        s = s * s % P;
        if (k & 1) s = s * b % P;
        return s;
    }
    int main()
    {
    	int n, m;
    	cin >> n >> m;
        if (m <= 1)
        {
            cout << power(n, n - 1 + m) << endl;
            return 0;
        }
        long long k = m, l = 1;
        while (k != 1) k = k * m % n, l++;
        cout << power(n, (n - 1) / l) << endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    62
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    5
    已通过
    3
    上传者