※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 25494번 문제인 단순한 문제 (Small)이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/25494
25494번: 단순한 문제 (Small)
세 양의 정수 $a$, $b$, $c$가 주어질 때, 다음 조건을 만족하는 정수 쌍 $(x, y, z)$의 개수를 구하시오. $1 \le x \le a$ $1 \le y \le b$ $1 \le z \le c$ $(x\,\bmod\,y) = (y\,\bmod\,z) = (z\,\bmod\,x)$ $(A\,\bmod\,B)$는 $A$를 $B$
www.acmicpc.net
1 이상 a 이하의 모든 가능한 x, 1 이상 b 이하의 모든 가능한 y, 1 이상 c 이하의 모든 가능한 z에 대하여 각각 x mod y와 y mod z, z mod x를 직접 계산해 조건에 맞는 정수 쌍의 개수를 세어 문제를 해결하자. 즉, 모든 가능한 경우의 수에 대하여 x mod y, y mod z, z mod x를 직접 계산해 경우의 수를 직접 세는 것으로 문제를 해결하자. 이는 삼중 반복문을 이용하여 쉽게 구현할 수 있다.
더 높은 효율의 풀이는 25487번 문제의 풀이를 참고하자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int T; cin >> T;
while (T--) {
int cnt = 0;
int a, b, c; cin >> a >> b >> c;
for (int x = 1; x <= a; x++) {
for (int y = 1; y <= b; y++) {
for (int z = 1; z <= c; z++) {
int X = x % y, Y = y % z, Z = z % x;
if (X == Y && Y == Z) cnt++;
}
}
}
cout << cnt << '\n';
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 25640 // C++] MBTI (0) | 2022.10.23 |
---|---|
[BOJ 25628 // C++] 햄버거 만들기 (0) | 2022.10.22 |
[BOJ 25487 // C++] 단순한 문제 (Large) (0) | 2022.10.20 |
[BOJ 25314 // C++] 코딩은 체육과목 입니다 (0) | 2022.10.19 |
[BOJ 25501 // C++] 재귀의 귀재 (0) | 2022.10.18 |