劳大995!!!
查看原帖
劳大995!!!
1406653
Killa_tsn楼主2024/8/13 08:07

WA了第六个

#include<bits/stdc++.h>
using namespace std;
int lcm(long long a,long long b){
	return  a/__gcd(a,b)*b;
}
int main(){
	long long cs;
	cin>>cs;
	for(int op=1;op<=cs;op++){
		long long a,b;
	    cin>>a>>b;
	    if(a==b){
	    	cout<<0<<endl;
	    	continue;
	    }
	    if(a>b) swap(a,b);
	    vector<int> A,B;
	    A.push_back(2),B.push_back(2);
	    A.push_back(a),B.push_back(b);
	    for(int i=2;i<=a/i;i++){
	    	if(a%i==0){
	    		long long x=i,y=a/i;
	    		if(x!=1) A.push_back(x);
	    		if(y!=1) A.push_back(y);
	    	}
	    }
	    for(int i=2;i<=b/i;i++){
	    	if(b%i==0){
	    		long long x=i,y=b/i;
	    		if(x!=1) B.push_back(x);
	    		if(y!=1) B.push_back(y);
	    	}
	    }
	    long long ans=lcm(a,b);
	    for(auto&v1:A){
	    	long long now=lcm(a,v1)+lcm(b,v1);
	    	ans=min(ans,now);
	    	for(auto&v2:B){
	    		long long now1=lcm(a,v1)+lcm(v1,v2)+lcm(v2,b);
	    		long long now2=lcm(a,v1)+lcm(v1,2)+lcm(v2,2)+lcm(v2,b);
	    		ans=min({ans,now1,now2});
	    	}
	    }
	    for(auto&v1:B){
	    	long long now=lcm(a,v1)+lcm(b,v1);
	    	ans=min(ans,now);
	    	for(auto&v2:A){
	    		long long now1=lcm(a,v1)+lcm(v1,v2)+lcm(v2,b);
	    		long long now2=lcm(a,v1)+lcm(v1,2)+lcm(v2,2)+lcm(v2,b);
	    		ans=min({ans,now1,now2});
	    	}
	    }
	    cout<<ans<<endl;
	}
    return 0;
}

悬赏一个关注!!!

2024/8/13 08:07
加载中...