View Code of Problem 3836

#include <iostream>
#include <string>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>

using namespace std;
int gcd(int a, int b){
    if(b==0)
        return a;
    else
        return gcd(b, a%b);
}
int lcm(int a, int b){
    return a/gcd(a,b) *b;
}
struct Number{
    int a;
    int b;
    int sum;
}num[100010];
bool cmp(Number na, Number nb){
    return na.sum < nb.sum;
}
int main() {
    int g, l;
    while (scanf("%d %d", &g, &l) != EOF){
        int count =0;
        for (int i = g; i <= l; i+=g) {
            for (int j = g; j <= l; j+=g) {
                if(gcd(i,j)==g && lcm(i,j)==l){
//                    cout <<i <<" "<<j<<endl;
                    num[count].a = i;
                    num[count].b = j;
                    num[count].sum = i+j;
                    count ++;
                    break;
                }
            }
        }
        sort(num, num+count, cmp);
        if(num[0].a > num[0].b){
            swap(num[0].a, num[0].b);
        }
        printf("%d %d\n", num[0].a, num[0].b);
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 3836