首页 > 代码库 > CF 27E Number With The Given Amount Of Divisors
CF 27E Number With The Given Amount Of Divisors
A - Number With The Given Amount Of Divisors
Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uDescription
Given the number n, find the smallest positive integer which has exactly n divisors. It is guaranteed that for the given n the answer will not exceed 1018.
Input
The first line of the input contains integer n (1?≤?n?≤?1000).
Output
Output the smallest positive integer with exactly n divisors.
Sample Input
Input
4
Output
6
Input
6
Output
12
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <climits> using namespace std; #define ll long long const int MAXN=10010;; ll ans; int n; int prm[10]={2,3,5,7,11,13,17,19,23,29}; void dfs(int a,int b,ll tmp) { if(tmp<ans && a == n)ans=tmp; if(a>=n )return; for(int i=1;i<=64;i++) { if(tmp>ans/prm[b])break;//改为tmp*prm[b]>ans---------wa.........因为longlong * int 可能超出longlong的界限 tmp*=prm[b]; dfs(a*(i+1),b+1,tmp); } } int main() { while(scanf("%d",&n)!=EOF) { ans=LONG_LONG_MAX; dfs(1,0,1); printf("%lld\n",ans); } return 0; }
//prm范围为啥10都够了?我不明白
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。