1 条题解
-
0
#include #define int long long using namespace std; const int N = 1e8 + 10; const int inf = 0x3f3f3f3f; //const int g[4][2] = {{1 , 0} , {-1 , 0} , {0 , 1} , {0 , -1}}; ////bool vis[N][N]; int n; int v;//记录质数个数 int ans = -inf; int zhou = 1; //答案 vector<int> hqt; void dfs(int step , int sum , int num){//step表示第step个质数,sum表示被质数凑的数,num表示当前状态下因数个数 if(step > v){ return; } if(num > ans){ ans = num; zhou = sum; } if(num == ans){ zhou = min(zhou , sum); } for (int i = 1; i <= 60 ;i ++){ int t = hqt[step]; sum *= t; if(sum > n){ return; } dfs(step + 1 , sum , num * (i + 1)); } } signed main(){ freopen("factor.in" , "r" , stdin); freopen("factor.out" , "w" , stdout); int T; cin >> T; for (int i = 2 ; i <= 100 ; i ++){ bool flag = false; for (int j = 2 ; j <= i - 1 ; j ++){ if(i % j == 0){ flag = true; break; } } if(!flag){ hqt.push_back(i); v ++; } } // for(int i = 0 ; i < v ; i ++){ // cout << hqt[i] << " "; // } while(T --){ cin >> n; zhou = 1; ans = -inf; dfs(0 , 1 , 1); cout << zhou << endl; } return 0; }
信息
- ID
- 555
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 103
- 已通过
- 13
- 上传者