์ฐ์ ๊ธฐ๋ก ๐ช
[๋ฐฑ์ค2609]-์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์(C++)/์ ํด๋ฆฌ๋ ํธ์ ๋ฒ ๋ณธ๋ฌธ
Problem Solving/BOJ
[๋ฐฑ์ค2609]-์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์(C++)/์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
kite707 2021. 7. 18. 15:14https://www.acmicpc.net/problem/2609
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ๊ณผ์ ์ ์๋์ ๊ฐ๋ค.
- ํฐ ์ซ์๋ฅผ ์์ ์ซ์๋ก mod์ฐ์ฐ์ ํ๋ค.
- ์์ ์ซ์๋ฅผ 1๋ฒ์์ ๊ตฌํ ๋๋จธ์ง mod์ฐ์ฐ์ ํ๋ค.
- ์ ๊ณผ์ ์ mod์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ 0์ด ๋์ฌ๋ ๊น์ง ๊ณ์ ๋ฐ๋ณตํ๋ค.
- ์ด๋ ๋๋๋ ์๋ก ์ฌ์ฉ๋ ์๊ฐ ๋ ์์ ์ต๋๊ณต์ฝ์๊ฐ ๋๋ค.
์ ๊ณผ์ ์ ์ด์ฉํด์ 1428๊ณผ 833์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํด๋ณด๋๋ก ํ์.
mod์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ 0์ด ๋ ๋ ๋๋๋ ์๋ 119์์ผ๋ 1428๊ณผ 833์ ์ต๋๊ณต์ฝ์๋ 119์ด๋ค. ์ด๋ฅผ ์ฝ๋๋ก ๊ตฌํํ๋ฉด ์๋์ ๊ฐ๋ค.
int gcd(int a, int b) {
int c = a % b;
while (c != 0) {
a = b;
b = c;
c = a % b;
}
return b;
}
์ต์๊ณต๋ฐฐ์ ๊ตฌํ๊ธฐ
์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๊ธฐ๋ฅผ ์๋ฃํ๋ค๋ฉด ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ ๊ฐ๋จํ๋ค. ์ํ์ ์ผ๋ก ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์์ ๊ณฑ์ ๋ ์์ ๊ณฑ๊ณผ ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
์ต๋๊ณต์ฝ์*์ต์๊ณต๋ฐฐ์ = ๋ ์์ ๊ณฑ
์ฆ ์๋์ ๊ฐ์ด ๊ตฌํ ์ ์๋ค.
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
์ ์ฒด ์ฝ๋
์์์ ๋ฌธ์ ๊ฐ ์๊ตฌํ๋๋ก ๋ ์๋ฅผ ์ ๋ ฅ๋ฐ์ ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์๋ฅผ ์ถ๋ ฅํ๋ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
#include <iostream>
using namespace std;
int gcd(int a, int b) {
int c = a % b;
while (c != 0) {
a = b;
b = c;
c = a % b;
}
return b;
}
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
int n1, n2;
cin >> n1 >> n2;
cout << gcd(n1, n2) << "\n" << lcm(n1, n2);
}
'Problem Solving > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 1620]-๋๋์ผ ํฌ์ผ๋ชฌ ๋ง์คํฐ ์ด๋ค์(C++)/์ด์งํ์, ์ซ์์ฌ๋ถ (0) | 2021.07.28 |
---|---|
[๋ฐฑ์ค1978]-์์ ์ฐพ๊ธฐ(C++) (0) | 2021.07.18 |
[๋ฐฑ์ค1012] ์ ๊ธฐ๋ ๋ฐฐ์ถ(C++) (0) | 2021.07.08 |
[๋ฐฑ์ค1260]DFS์ BFS(C++) (0) | 2021.07.03 |
[๋ฐฑ์ค10989]-์ ์ ๋ ฌํ๊ธฐ 3(C++) (0) | 2021.06.23 |