您的位置:首页 > 其它

day4 CodeForces 27E Number With The Given Amount Of Divisors

2016-08-02 23:14 429 查看
首先是关于因数的一个性质

若X=(p1^a1)*(p2^a2)*....*(pn^an)

则X的因子个数为(a1+1)*(a2+1)*……*(an+1)

其中p是素数
那么就可以打出一个质数表,对素数和幂次DFS搜索即可

#include"iostream"
using namespace std;
long long x;
int p[20]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71};
int n;
long long y=1e18;
void dfs(long long x,int cur,int loc)
{
if(cur>n) return;
if(cur==n&&y>x) { y=x; return;}
for(int i=1;i<64;i++)
{
x*=p[loc];
if(x<y) dfs(x,cur*(i+1),loc+1);
else break;
}

}
int main()
{
cin>>n;
dfs(1,1,0);
cout<<y<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: