#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.