求助:U137970 年会小游戏
  • 板块灌水区
  • 楼主xw_lemon
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/8/5 15:52
  • 上次更新2024/8/5 16:36:05
查看原帖
求助:U137970 年会小游戏
559013
xw_lemon楼主2024/8/5 15:52
#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=1;ans<=n&&i<=last;ans*=p[now],i++){
//		dfs(now+1,ans,i,num*(i+1));
//	}
	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

2024/8/5 15:52
加载中...