题目链接:这里
题意:如题。
解法:对于f(n),若自然数对(x,y)满足 x+y=n,且gcd(x,y)=1,则这样的数对对数为f(n)
证明f(n)=phi(n)
设有命题 对任意自然数x满足x < n,gcd(x,n)=1等价于gcd(x,y)=1 成立,则该式显然成立,下面证明这个命题。
假设gcd(x,y)=1时,gcd(x,n)=k!=1,则n=n’k,x=x’k,gcd(x,y)=gcd(x,n-x)=gcd(x’k,(n’-x’)k)=k,与假设gcd(x,y)=1不符,故gcd(x,y)=1时,gcd(x,n)=1。同理可证gcd(x,n)=1时,gcd(x,y)=1。
综上,f(n)=phi(n)。
下面那个函数意义就是 n的所有因数的欧拉函数之和,这个数其实就是n本身,不会证明。所以F_k(n)=phi(…phi(n))(求(k+1)/2次phi。

//CF 776E
//f(n) = phi(n)
//g(n) = n

#include <bits/stdc++.h>
using namespace std;
long long eluer(long long n){
    long long ret = n;
    for(long long i = 2; i*i <= n; i++)
    if(n%i == 0){
        ret -= ret/i;
        while(n%i == 0) n /= i;
    }
    if(n > 1) ret -= ret/n;
    return ret;
}
long long n, k;
int main()
{
    cin >> n >> k;
    k = (k + 1) / 2;
    while(k-- && n > 1) n = eluer(n);
    cout << n % 1000000007 << endl;
    return 0;
}