눈팅하는 게임개발자 블로그

백준 알고리즘 6064 본문

공부한거/백준알고리즘

백준 알고리즘 6064

Palamore 2018. 1. 2. 15:07


#include

using namespace std; int calc(int M, int N, int x, int y); int main() { int cnt = -1; int cnt_temp = 0; int T; cin >> T; int M, N, x, y; for (int i = 0; i < T; i++) { cin >> M >> N >> x >> y; cout << calc(M,N,x,y); if (i != T - 1) cout << "\n"; } return 0; } int calc(int M, int N, int x, int y) { int temp = 0; int cnt = 0; if (N != y) { while (1) { if ((M * cnt + x) % (N) == y) { temp = M*cnt + x; break; } if (cnt == N) { temp = -1; break; } cnt++; } } else { if (M != x) { while (1) { if (N*cnt % M == x) { temp = N*cnt; break; } if (cnt == M) { temp = -1; break; } cnt++; } } else { cnt = 1; while (1) { if (N*cnt % M == 0) { temp = N*cnt; break; } if (cnt == M) { temp = -1; break; } cnt++; } } } return temp; }

규칙은 M과 N을 M진수, N진수로서 간주하여 k를 M진수로 표현했을때의 첫번째 자리의 숫자가 x이면서 k를 N진수로 표현했을때의 첫번째 자리의 숫자가 y일 때의 k값을 찾아내는 것.

주어지는 값들이 모두 1보다 크다는 조건과 M과 x가 같을경우, N과 y가 같을경우와 %연산을 할 경우 같은 값은 0이 결과값으로 나온다는 점을 고려하여 조건문을 작성.

'공부한거 > 백준알고리즘' 카테고리의 다른 글

백준 알고리즘 2108  (0) 2018.01.08
백준 알고리즘 10989  (0) 2018.01.05
백준 알고리즘 2775  (1) 2017.12.29
백준 알고리즘 1316  (0) 2017.12.27
백준 알고리즘 2448  (0) 2017.12.22