题意:求fk(n)%1000000007。
题解:
f(n)为欧拉函数
g(n)恒等于n
推荐看下大牛的证明QAQ
因为每走两步n都会取一次phi,所以可以直接暴力。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
ll phi(ll n){
ll ans=n,i;
for(i=2;i*i<=n;i++){
if(n%i==0){
ans=ans-ans/i;
while(n%i==0)n/=i;
}
}
if(n>1)ans=ans-ans/n;
return ans;
}
int main(){
ll n,k;
cin>>n>>k;
while(k>0&&n>1){
if(k%2==1)n=phi(n);
k--;
}
cout<<n%1000000007<<endl;
return 0;
}