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;
}
悬赏一个关注!!!