[백준 1934번 C/C++] 최소공배수
목차
[백준 1934번 C/C++] 최소공배수
https://www.acmicpc.net/problem/1934
코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <vector>
using namespace std;
vector<int> v;
int main() {
int t, a, b, cf;
scanf("%d", &t);
for (int i = 0; i < t; i++)
{
cf = 1;
scanf("%d %d", &a, &b);
if(a>b)
{
for (int j = b; j >= 1; j--)
{
if (a % j == 0 && b % j == 0)
{
cf *= j; //공약수를 곱해 최대공약수를 구함.
a /= j;
b /= j;
}
}
}
else
{
for (int j = a; j >= 1; j--)
{
if (a % j == 0 && b % j == 0)
{
cf *= j; //공약수를 곱해 최대공약수를 구함.
a /= j;
b /= j;
}
}
}
v.push_back(a * b * cf);
}
for (int i = 0; i < v.size(); i++)
printf("%d\n", v[i]);
return 0;
}
시간 140m/s
느리다.
아래에 더 나은 코드가 있다.
더 나은 풀이
#include <stdio.h>
int GCD(int a, int b)
{
return b ? GCD(b, a%b) : a;
}
int main()
{
int T, A, B;
scanf("%d", &T);
while (T--)
{
scanf("%d %d", &A, &B);
printf("%d\n", A*B / GCD(A, B));
}
}
유클리드 호제법으로 최대공약수를 구한다.
최소공배수 = A * B / 최대공약수
위의 코드는 시간 0m/s
https://tech.lonpeach.com/2017/11/12/Euclidean-algorithm/
'⭐ 코딩테스트 > 백준' 카테고리의 다른 글
[백준 번 C/C++] ㅇㄹㅇㄴ (0) | 2023.05.01 |
---|---|
[백준 1934번 C/C++] 분수 합 (0) | 2023.04.29 |
[백준 1010번] 다리 놓기 (0) | 2023.04.27 |
[백준 2581번 C/C++] 소수 (0) | 2023.04.26 |
[백준 9506번 C/C++] 약수들의 합 (0) | 2023.04.25 |
댓글
이 글 공유하기
다른 글
-
[백준 번 C/C++] ㅇㄹㅇㄴ
[백준 번 C/C++] ㅇㄹㅇㄴ
2023.05.01 -
[백준 1934번 C/C++] 분수 합
[백준 1934번 C/C++] 분수 합
2023.04.29 -
[백준 1010번] 다리 놓기
[백준 1010번] 다리 놓기
2023.04.27 -
[백준 2581번 C/C++] 소수
[백준 2581번 C/C++] 소수
2023.04.26