Problem:
Score : 300 points

Problem Statement

Takahashi is organizing a party.

At the party, each guest will receive one or more snack pieces.

Takahashi predicts that the number of guests at this party will be A or B.

Find the minimum number of pieces that can be evenly distributed to the guests in both of the cases predicted.

We assume that a piece cannot be divided and distributed to multiple guests.

Constraints

1 \leq A, B \leq 10^5

A \neq B

All values in input are integers.

Input

Input is given from Standard Input in the following format:

A B

Output

Print the minimum number of pieces that can be evenly distributed to the guests in both of the cases with A guests and B guests.

Sample Input 1

2 3

Sample Output 1

6

When we have six snack pieces, each guest can take three pieces if we have two guests, and each guest can take two if we have three guests.

Sample Input 2

123 456

Sample Output 2

18696

Sample Input 3

100000 99999

Sample Output 3

9999900000

Solution in C++ (GCC 9.2.1) (judge verdict: Accepted)


#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
#include <utility>
#include <iomanip>
#include <queue>
#include <set>
#include <numeric>
#include <unordered_set>

#define rep(i,n) for(int i=0;i< (n);++i)
typedef long long ll;

using namespace std;


/*
int main(){
    int N;
    cin>>N;
    double A[N];
    for(int i=0;i<N;++i){
        cin>>A[i];
        cout<<fixed<<setprecision(9)<<A[i]<<endl;
    }
    
    cout<<"------------"<<endl;
    ll count=0;
    
    for(int i=0;i<N;++i){
        for(int j=i+1;j<N;++j){
            cout<<fixed<<setprecision(9)<<A[i]*A[j]<<endl;
            double tmp=A[i]*A[j];
            if(tmp==floor(tmp)){
                ++count;
            }
        }
    }
    
    cout<<count<<endl;
    
    
}

*/

ll gcd(ll a,ll b){
    while(true){
        b=b%a;
        //cout<<"b:"<<b<<endl;
        if(b==0){
            return a;
        }
        a=a%b;
         //cout<<"a:"<<a<<endl;
        if(a==0){
            return b;
        }
        
        

    }
 
}

ll lgd(ll a,ll b){
    return a*b/gcd(a,b);
}




int main(){
    ll A,B;
    cin>>A>>B;
    cout<<lgd(A,B)<<endl;
    
   
}