본문 바로가기
온라인저지

[BOJ] 13241번: 최소공배수

by plzfday 2018. 4. 1.

13241번: 최소공배수

풀이

gcd와 lcm을 알고 있으면 되는 문제다. 

최소공배수는 주어진 정수 a, b에서 lcm(a, b) = a * b / gcd(a, b)이다.
최대공약수는 유클리드 호제법을 사용하면 된다.

정수 m, n(m > n)이 주어질 때 gcd(m, n)은
1
2
3
4
long long int gcd(long long int a, long long int b)
{
    return b ? gcd(b, a % b) : a;
}



다음과 같이 구현할 수 있다. 자세한 내용과 증명 과정은 링크를 참고하면 된다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdio>
 
long long int gcd(long long int a, long long int b)
{
    return b ? gcd(b, a % b) : a;
}
 
long long int lcm(long long int a, long long int b)
{
    return (a * b) / gcd(a, b);
}
 
int main()
{
    long long int a, b;
    scanf("%lld %lld"&a, &b);
 
    long long ans = lcm(a, b);
    printf("%lld", ans);
    return 0;
}



'온라인저지' 카테고리의 다른 글

[BOJ] 14867번: 물통  (0) 2018.04.09
[BOJ] 14697번: 방 배정하기  (0) 2018.04.09
[BOJ] 14696번: 딱지놀이  (0) 2018.04.09
[BOJ] 11728번: 배열 합치기  (0) 2018.03.29
[BOJ] 13866번: 팀 나누기  (0) 2018.03.28
[BOJ] 1912번: 연속합  (0) 2018.03.28

댓글