A - Number With The Given Amount Of Divisors
Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
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
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都够了?我不明白
CF 27E Number With The Given Amount Of Divisors
时间: 2024-10-08 08:54:52