일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring-Boot
- Daemon
- data-root
- docker
- django #ninja #django-ninja #장고
- 42
- 네스트JS
- Spring
- nestjs
- ecole42
- dockerd
- pipex
- Born2beroot #42
- 42Seoul
- 데이터중심애플리케이션설계
Archives
- Today
- Total
혼자 정리
6064번: 카잉 달력 본문
C++
#include <iostream>
using namespace std;
int T, M, N, x, y;
int ret;
int gcd(int a, int b){
while (b > 0){
int r = a % b;
a = b;
b = r;
}
return (a);
}
int lcm(int a, int b){
return (a * b / gcd(a, b));
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> T;
for (int i = 0; i < T; i++){
cin >> M >> N >> x >> y;
ret = -1;
int tmp = x;
int cnt = x;
for (int j = 0; j < N; j++){
int yy;
if (tmp % N == 0)
yy = N;
else
yy = tmp % N;
if (yy == y)
break;
cnt += M;
tmp = yy + M;
}
if (cnt < lcm(M, N))
cout << cnt << "\n";
else
cout << -1 << "\n";
}
}
- x값을 기준으로 카운트를 M씩 증가시켜 가면서 원하는 숫자가 있는지 체크하는 방식
- 카운트의 upper bound는 M과 N의 최소공배수
- 유클리드 호제법 사용
- $O(lcm(M, N)) / M$
'알고리즘 문풀 > 백준' 카테고리의 다른 글
11403번: 경로 찾기 (0) | 2021.08.09 |
---|---|
11724번: 연결 요소의 개수 (0) | 2021.08.09 |
11727번: 2×n 타일링 2 (0) | 2021.08.08 |
11659번: 구간 합 구하기 4 (0) | 2021.08.08 |
9375번: 패션왕 신해빈 (0) | 2021.08.08 |