Number With The Given Amount Of Divisors CodeForces - 27E(反素数相关)
程序员文章站
2022-07-15 16:18:28
...
给出一个n,求因数个数为n的最小正整数x。
任何一个数 质因数分解之后 x = 2^t1 + 3^t2 + 5^t3 + 7^t4……
求因数的个数为n的数,就是求t1 * t2 * t3 * t4...... = n 的数。
在满足上述条件的数中找最小的一个就可以了。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
vector<LL>ve;
LL n,ans;
void dfs(LL deep , LL temp , LL num_type)
{
// cout << num_type << endl;
if(num_type > n) return ;
if(num_type == n && ans > temp) ans = temp;
for(int i = 1 ; i < 63 ; i++)
{
if(ans < temp * ve[deep]) break;
dfs(deep + 1 , temp *= ve[deep] , num_type*(i+1));
}
}
void get_prime()
{
for(int i = 2 ; i < 100 ; i++)
{
bool flag = true;
for(int j = 2 ; j < i ; j++)
{
if(i % j == 0)
{
flag = false;
break;
}
}
if(flag)
{
ve.push_back(i);
}
}
}
int main()
{
get_prime();
ans = 1e18+10;
cin >> n;
dfs(0,1,1);
cout << ans << endl;
return 0;
}
上一篇: 表达式求值