반응형
리뷰
변수 형식 지키기가 너무나 어렵다... 휴
문제 풀이
- 테스트 케이스의 개수 n과 정수 a, b에 값을 받아주고 lcm 함수에 a, b를 인자로 넣어준다.
- a, b중 작은 값을 gcd로 초기화 하고, a를 gcd로 나눈 값과 b를 gcd로 나눈 값이 모두 0이 될때까지 gcd를 빼준다.
- while루프를 벗어났을때 a, b중 큰 값과 a와 b를 변경된 gcd로 나눈 값 중 작은 값을 곱해준 뒤 리턴해 준다.
- lcm 함수로부터 리턴받은 값을 출력해 준다.
참고 사항
두 수의 범위가 1,000,000 미만이므로 int 형식으로는 오버플로우가 난다, 리턴 시 long long 형식으로 바꿔준다.
정답 코드
#include <iostream>
using namespace std;
long long lcm(int a, int b) {
int gcd = min(a, b);
while (a % gcd || b % gcd) {
gcd--;
}
return (long long)max(a, b) * min(a / gcd, b / gcd);
}
int main() {
int n;
cin >> n;
while (n--) {
int a, b;
cin >> a >> b;
long long ans = lcm(a, b);
cout << ans << "\n";
}
}
728x90
반응형
'알고리즘 공부 > C++' 카테고리의 다른 글
백준 9507번 Generations of Tribbles C++ (0) | 2024.07.25 |
---|---|
백준 10769번 행복한지 슬픈지 C++ (0) | 2024.07.25 |
백준 1940번 주몽 C++ 투 포인터 (4) | 2024.07.22 |
백준 1159번 농구 경기 C++ (0) | 2024.07.21 |
백준 1076번 저항 C++ (0) | 2024.07.21 |