😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[BAEKJOON C++] 2609_μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜ λ³Έλ¬Έ

πŸ¦₯ μ½”ν…Œ/BAEKJOON

[BAEKJOON C++] 2609_μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜

μ§•μ§•μ•ŒνŒŒμΉ΄ 2023. 7. 1. 15:43
728x90
λ°˜μ‘ν˜•
 μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜μ˜ κ³±μ€ λ‘ μˆ˜μ˜ κ³±κ³Ό κ°™μŒ
두 κ°œμ˜ μžμ—°μˆ˜λ₯Ό μž…λ ₯λ°›μ•„ μ΅œλŒ€ κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œ κ³΅λ°°μˆ˜λ₯Ό μΆœλ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨

μž…λ ₯
첫째 μ€„μ—λŠ” λ‘ κ°œμ˜ μžμ—°μˆ˜κ°€ μ£Όμ–΄μ§„λ‹€.
이 λ‘˜μ€ 10,000μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ©° μ‚¬μ΄μ— ν•œ μΉΈμ˜ κ³΅λ°±μ΄ μ£Όμ–΄μ§„λ‹€.

좜λ ₯
첫째 μ€„μ—λŠ” μž…λ ₯으둜 μ£Όμ–΄μ§„ λ‘ μˆ˜μ˜ μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό, 
λ‘˜μ§Έ μ€„μ—λŠ” μž…λ ₯으둜 μ£Όμ–΄μ§„ λ‘ μˆ˜μ˜ μ΅œμ†Œ κ³΅λ°°μˆ˜λ₯Ό μΆœλ ₯ν•œλ‹€.
// [2609] μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜

/*
두 개의 μžμ—°μˆ˜λ₯Ό μž…λ ₯λ°›μ•„ μ΅œλŒ€ κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œ 곡배수λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨

μž…λ ₯
첫째 μ€„μ—λŠ” 두 개의 μžμ—°μˆ˜κ°€ 주어진닀.
이 λ‘˜μ€ 10,000μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ©° 사이에 ν•œ 칸의 곡백이 주어진닀.

좜λ ₯
첫째 μ€„μ—λŠ” μž…λ ₯으둜 주어진 두 수의 μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό, 
λ‘˜μ§Έ μ€„μ—λŠ” μž…λ ₯으둜 주어진 두 수의 μ΅œμ†Œ 곡배수λ₯Ό 좜λ ₯ν•œλ‹€.
*/

// ν‘œμ€€ μŠ€νŠΈλ¦Όμ—μ„œ 읽기 및 μ“°κΈ°λ₯Ό μ œμ–΄ν•˜λŠ” 개체λ₯Ό μ„ μ–Έ
#include <iostream>
using namespace std;

// μ΅œλŒ€ κ³΅μ•½μˆ˜
int gcd(int a, int b) {
	// (1) 큰 숫자λ₯Ό μž‘μ€ 숫자둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€
	int r = a % b;

	// (3) λ‚˜λ¨Έμ§€κ°€ 0이 될 λ•ŒκΉŒμ§€ μœ„ κ³Όμ • 반볡
	// (4) λ‚˜λ¨Έμ§€κ°€ 0일 λ•Œ λ‚˜λˆˆ 값이 μ΅œλŒ€ κ³΅μ•½μˆ˜
	while (r != 0) {
		a = b;
		b = r;
		// (2) (1)μ—μ„œ κ΅¬ν•œ λ‚˜λ¨Έμ§€ κ°’μœΌλ‘œ μž‘μ€ 숫자 λ‹€μ‹œ λ‚˜λˆ„κΈ°, κ·Έ λ‚˜λ¨Έμ§€
		r = a % b;
	}
	return b;
}

// μ΅œμ†Œ 곡배수
int lcm(int a, int b) {
	//  μ΅œλŒ€ κ³΅μ•½μˆ˜ * μ΅œλŒ€ 곡배수 = 두 수의 κ³±
	return (a * b) / gcd(a, b);
}

int main()
{	
	int a, b;
	cin >> a >> b;
	cout << gcd(a, b) << endl;
	cout << lcm(a, b) << endl;
	return 0;
}

728x90
λ°˜μ‘ν˜•
Comments