求助dalao 10pts(TLE) 玄关
  • 板块P2406 最小和
  • 楼主niveKmAI
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/8 10:53
  • 上次更新2024/8/8 11:29:17
查看原帖
求助dalao 10pts(TLE) 玄关
867875
niveKmAI楼主2024/8/8 10:53
#include<bits/stdc++.h>
#define int long long
using namespace std;
int mysqrt(int x){
	if(x==0){
		return 0;
	}
	int ans=exp(0.5*log(x));
	return ((ans+1)*(ans+1)<=x ? ans+1:ans);
}
signed main() {
	/*ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);*/
	/*freopen("a.in","r",stdin);
	freopen("a.out","w",stdout);*/
	int a,b;
	while(/*cin>>a>>b!=EOF*/scanf("%lld%lld",&a,&b)==2) {
		int m=b/a;
		int x,y;
		int p,q;
		
		for(int i=mysqrt(m); i>=1; i--) {
			if(m%i==0&&__gcd(i,m/i)==1) {
				int c=i;
				x=min(b/c,c*a);
				y=max(b/c,c*a);
				c=m/i;
				if(__gcd(m/c,c)==1) {
					p=min(b/c,c*a);
					q=max(b/c,c*a);
					if(p+q<=x+y) {
						x=p;
						y=q;
					}
				}
				break;
			}
		}
		//cout<<x<<" "<<y<<"\n";
		printf("%lld %lld\n",x,y);
	}
	return 0;
}
2024/8/8 10:53
加载中...