https://www.acmicpc.net/problem/25494
<요약>
양의 정수 a,b,c를 입력하고
1 <= x <= a, 1 <= y <= b, 1 <= z <= c 의 x,y,z가
(x mod y) = (y mod z) = (z mod x) 를 만족하는 (x,y,z)의 개수를 구하는 것!
이 문제는 브루트 포스 알고리즘을 이용하여 푸는 문제이다.
나는 for문을 3개 이용하여 카운트해줬다.
#include <iostream>
using namespace std;
int main() {
cin.tie(NULL);
cout.tie(NULL);
ios::sync_with_stdio(false);
int n;
cin >> n;
while (n > 0) {
int a, b, c;
int cnt = 0;
cin >> a >> b >> c;
for (int i = 1; i <= a; i++) {
for (int j = 1; j <= b; j++) {
for (int k = 1; k <= c; k++) {
if (i % j == j % k && j % k == k % i) cnt++;
}
}
}
cout << cnt <<'\n';
n--;
}
return 0;
}
브루트 포스(brute force) 알고리즘
https://namu.wiki/w/%EB%B8%8C%EB%A3%A8%ED%8A%B8%20%ED%8F%AC%EC%8A%A4
brute
는 짐승같은, 난폭한이라는 뜻이고, force
는 힘이다.
가능한 경우의 수를 모두 대입해보며 문제를 해결하는 알고리즘으로 정확도 100%를 보장한다.