Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 컴퓨터공학 #c #c언어 #문자열입력
- HTML #CSS
- 컴퓨터공학 #Java #자바 #클래스 #객체 #인스턴스
- 잔
- 컴퓨터공학 #자료구조 #스택 #c++ #알고리즘 #백준문제풀이
- BOJ #컴퓨터공학 #C++ #알고리즘 #자료구조
Archives
- Today
- Total
영벨롭 개발 일지
[백준 BOJ][C++]6064번 카잉 달력 풀이: 브루트 포스 본문
https://www.acmicpc.net/problem/6064
[풀이 과정]
1. 멸망년도인 m과 n의 최소공배수를 구한다.
2. <x:y> 로 표현되는 해 i를 x값으로 초기화 한다.
3. (i - 1)%n + 1 == y를 만족하는지 검사한다.
4. 최소공배수에 도달하거나 위 조건을 만족할 때까지 i 에 m 값을 더해 3~4 과정을 반복한다.
5. i가 최소 공배수보다 크다면 유효하지 않은 해이고, 그렇지 않다면 i를 출력한다.
#include<iostream>
#include<algorithm>
using namespace std;
int gcd(int a, int b) {
if (a < b) {
int temp = a;
a = b;
b = temp;
}
int r = a % b;
while (r != 0) {
a = b;
b = r;
r = a % b;
}
return b;
}
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int main(void) {
int t;
int n, m, x, y;
cin >> t;
while (t > 0) {
cin >> m >> n >> x >> y;
int i;
bool flag = false;
int limit = lcm(m, n);
for (i = x; i <= limit; i += m) {
if ((i - 1) % n + 1 == y) {
flag = true;
break;
}
}
if (flag) {
cout << i << endl;
}
else {
cout << -1 << endl;
}
t--;
}
return 0;
}
반응형
'알고리즘 문제 풀이 > BOJ' 카테고리의 다른 글
[백준 BOJ][C++]13913번 숨바꼭질 4 풀이: BFS (0) | 2022.03.24 |
---|---|
[백준 BOJ][C++]1748번 수 이어 쓰기 1 풀이 (0) | 2022.03.24 |
[백준 BOJ][C++]1655번 가운데를 말해요 풀이: Heap (0) | 2022.03.23 |
[백준 BOJ][C++]1927번 최소 힙 풀이: Heap (0) | 2022.03.23 |
[백준 BOJ][C++]14500번 테트로미노 풀이: 브루트포스 & DFS (0) | 2022.03.21 |