codeforces 27E Number With The Given Amount Of Divisors(反素数)

xiaoxiao2021-02-27  168

根据反素数的性质,dfs就好了 反素数讲解:http://blog.csdn.net/ACdreamers/article/details/25049767

#include <bits/stdc++.h> using namespace std; typedef unsigned long long ULL; const ULL INF = ~0ULL; int p[16] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53}; int n; ULL ans; void dfs(int dept, ULL tmp, int num) { if(num > n)return; if(num == n && tmp < ans) ans = tmp; for(int i = 1; i <= 63; ++i) { if(ans/p[dept] < tmp) break; dfs(dept+1,tmp*=p[dept],num*(i+1)); } } int main() { while(cin >> n) { ans = INF; dfs(0,1,1); cout << ans << endl; } return 0; }
转载请注明原文地址: https://www.6miu.com/read-16212.html

最新回复(0)