#include <iostream>
int gcd(int iSmall, int iBig)
{
int iRemain = iBig % iSmall;
while (iRemain)
{
iBig = iSmall;
iSmall = iRemain;
iRemain = iBig % iSmall;
}
return iSmall;
}
int main()
{
int iFirst = 0;
int iSecond = 0;
std::cin >> iFirst >> iSecond;
if (iFirst > iSecond)
{
int iTemp = iFirst;
iFirst = iSecond;
iSecond = iTemp;
}
int iMin = gcd(iFirst, iSecond);
int iMax = iFirst * iSecond / iMin;
std::cout << iMin << "\n" << iMax;
return 0;
}
최근에 면접준비하다가 다 떨어지고(ㅋㅋㅋ....) 다시 코테로 돌아왔다...
솔브드에 CLASS라는 게 있는지 몰라서 백준만 풀다가 CLASS로 넘어왔다.
문제 자체는 어렵지 않은데 수학적 개념이 들어가있어서 올리는 걸로
최대공약수는 두 값 중 큰 값을 작은 값으로 나눈 것을 계속해서 나누면 나온다. 말로는 설명이 어려워서 아래 작성한다.
2335 와 300의 최대 공약수
2335 % 300 = 235
300 % 235 = 65
235 % 65 = 40
65 % 40 = 25
40 % 25 = 15
25 % 15 = 10
15 % 10 = 5
10 % 5 = 0
이렇게 마지막으로 남는 5가 최대 공약수가 된다.
최소공배수는 큰 값 X 최소 값 / 최대공약수 (소인수분해를 해보면 바로 답이 나온다)
'오늘의 알고리즘' 카테고리의 다른 글
[C++] 백준 1107 리모컨 (0) | 2022.08.25 |
---|---|
[C++] 백준 11050 이항 계수 1 (이항 계수) (0) | 2022.08.09 |
[C++] 백준 2749 피보나치 2 (0) | 2022.07.22 |
[C++] 백준 9471 피사노주기 (0) | 2022.07.22 |
[C++] 백준 2933 미네랄 (0) | 2022.07.21 |