Given two positive integers a and b,find suitable X and Y to meet the conditions:
X+Y=a
Least Common Multiple (X, Y) =b
Input
Output
For each set of input data,output a line of two integers,representing X, Y.If you cannot find such X and Y,output one line of “No Solution”(without quotation).
Sample Input
6 8
798 10780
Sample Output
No Solution
308 490
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
long long gcd(long long a,long long b);
long long lcm(long long a,long long b);
int main(){
long long a,b;
while(cin >> a >> b){
int temp = gcd(a,b);
long long x,y;
if(a*a > 4*b*temp){
x = (a + sqrt(a*a - 4*b*temp))/2;
y = a-x;
if(x+y == a && lcm(x,y) == b)
printf("%d %d\n",x,y);
else
cout << "No Solution" << endl;
}
else{
cout << "No Solution" << endl;
}
}
return 0;
}
long long gcd(long long a,long long b){
return b == 0 ? a : gcd(b,a%b);
}
long long lcm(long long a,long long b){
return a*b/gcd(a,b);
}