#include<bits/stdc++.h>
using namespace std;
long long t,n,res1,res2;
long long p[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
void dfs(long long now,long long ans,long long last,long long num){
if(num>res2||(num==res2&&ans<res1)) res2=num,res1=ans;
if(now>15) return ;
for(int i=0;i<=last;i++){
dfs(now+1,ans,i,num*(i+1));
if((long double)ans*(long double)p[now]>n) break;
ans*=p[now];
}
}
int main(){
cin>>t;
while(t--){
res1=1,res2=1;
cin>>n;
dfs(0,1,60,1);
cout<<res1<<" "<<res2<<endl;
}
return 0;
}
为什么第13行要转long double?
提前感谢QAQ