标签:des style blog class code c
Description
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
4
6
6
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都够了?我不明白
CF 27E Number With The Given Amount Of Divisors,布布扣,bubuko.com
CF 27E Number With The Given Amount Of Divisors
标签:des style blog class code c
原文地址:http://blog.csdn.net/u011026968/article/details/25870377