//https://www.acmicpc.net/problem/2609 #include <iostream> | |
using namespace std; | |
int gcd(int a, int b){ | |
return b? gcd(b, a%b) : a; | |
} | |
int main(){ | |
int a, b; | |
cin >> a >> b; | |
if(a<b) { | |
int tmp=a; | |
a=b; | |
b=tmp; | |
} | |
int ans=gcd(a,b); | |
cout << ans <<endl; | |
cout << a*b/ans <<endl; | |
return 0; | |
} |
>>유클리드 호제법
두 자연수 a,b에 대하여 (a>=b) a를 b로 나눈 나머지 r에 대하여, a와 b의 최대공약수와 b와 r의 최대공약수는 서로 같다.
a=AX
b=BX
일때(A와 B는 서로소고, 따라서 X는 최대공약수), a*b=A*B*X*X이므로
a*b/X=A*B*X 로 최소공배수이다.
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
180529_11586_지영 공주님의 마법 거울 (0) | 2018.05.29 |
---|---|
180528_2231_분해합 (0) | 2018.05.28 |
180526_4641_Doubles (0) | 2018.05.26 |
180525_10815_숫자카드 (0) | 2018.05.25 |
180524_9626_크로스워드 퍼즐 (0) | 2018.05.24 |
//https://www.acmicpc.net/problem/2609 #include <iostream> | |
using namespace std; | |
int gcd(int a, int b){ | |
return b? gcd(b, a%b) : a; | |
} | |
int main(){ | |
int a, b; | |
cin >> a >> b; | |
if(a<b) { | |
int tmp=a; | |
a=b; | |
b=tmp; | |
} | |
int ans=gcd(a,b); | |
cout << ans <<endl; | |
cout << a*b/ans <<endl; | |
return 0; | |
} |
>>유클리드 호제법
두 자연수 a,b에 대하여 (a>=b) a를 b로 나눈 나머지 r에 대하여, a와 b의 최대공약수와 b와 r의 최대공약수는 서로 같다.
a=AX
b=BX
일때(A와 B는 서로소고, 따라서 X는 최대공약수), a*b=A*B*X*X이므로
a*b/X=A*B*X 로 최소공배수이다.
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
180529_11586_지영 공주님의 마법 거울 (0) | 2018.05.29 |
---|---|
180528_2231_분해합 (0) | 2018.05.28 |
180526_4641_Doubles (0) | 2018.05.26 |
180525_10815_숫자카드 (0) | 2018.05.25 |
180524_9626_크로스워드 퍼즐 (0) | 2018.05.24 |