728x90
이 문제는, 최대 공약수를 활용하는 문제이다.
N 개의 소시지들을 한 줄로 다 이어 붙인다고 생각해보면
M 명에게 동등한 양을 주기 위해서는 N / M 개 만큼 줘야한다.
그러나 예외 사항으로, N 이 M 으로 나눠 떨어진다면 자를 필요가 없다 (ex) N = 6, M = 6
M - gcd(N, M) 을 하면 이에 대한 답을 구할 수 있다.
최대 공약수를 쓴다는것을 생각해내기는 꽤나 어려운것 같아서 쉬운 문제는 아닌것 같다
- c++
#include <iostream>
using namespace std;
int n, m;
int gcd(int a, int b) { return a % b == 0 ? b : gcd(b, a % b); }
int main() {
cin.tie(0); ios_base::sync_with_stdio(0);
cin >> n >> m;
cout << m - gcd(m, n);
return 0;
}
|
cs |
728x90
'PS' 카테고리의 다른 글
BOJ 10165 - 버스 노선 (0) | 2021.01.23 |
---|---|
BOJ 17136 - 색종이 붙이기 (0) | 2021.01.23 |
BOJ 1034 - 램프 (0) | 2021.01.20 |
BOJ 1937 - 욕심쟁이 판다 (0) | 2021.01.17 |
BOJ 15999 - 뒤집기 (0) | 2021.01.17 |