1 条题解

  • 0
    @ 2026-8-14 15:00:29
    #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
    上传者