题目
思路
φ(x)=n 当指数均为1时n最小
证明:容斥原理
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e9;
int ans=INT_MAX,n;
bool f;
map<int,bool> mp;
bool is_prime(int n){if(n<=1) return false;for(int i=2;i<=n/i;i++) if(n%i==0) return false;return true;
}
void dfs(int i,int num,int x){if(x>=ans) return;if(num==1) { ans=min(ans,1ll*x);f=1;return; }if(is_prime(num+1)) dfs(i+1,1,x*(num+1));for(int j=2;j<=num/j;j++) if(num%j==0&&!mp[j]&&is_prime(j+1)) mp[j]=1,dfs(j,num/j,x*(j+1)),mp[j]=0;
}
signed main()
{cin>>n;dfs(1,n,1);if(!f) cout<<-1;else cout<<ans;return 0;
}
end
完结撒花