안녕하세요.
여행벌입니다.
오늘은 ACM-ICPC 2014 본선 C번 문제인
BOJ 10448 Eureka Theorem 문제를 풀어보겠습니다.
[문제해석]
다음과 같은 Triangle Number로 이루어진 수열이 있을 때, 입력된 Input이 3개의 Triangular Number의 합으로 표현된다면 '1'을 출력, 아니라면 '0'을 출력하라.
[알고리즘설계]
1. N번 째, Triangular Number는 등비수열의 합 공식에 의해 n * (n + 1) / 2 로 구할 수 있다.
2. Input은 1000보다 작거나 같으므로, 우리는 1000보다 작거나 같은 Triangular Number만 미리 구해놓으면 된다.
3. Input이 작고, 1000보다 작거나 같은 Triangular Number도 44개밖에 없으므로 Brute 하게 3중 포문으로 구현한다.
#include<cstdio>
using namespace std;
int triangle_number[46] = { 0,1, };
int main(void) {
for (int i = 2; i < 46; i++) {
triangle_number[i] = i + triangle_number[i - 1];
}
int test_case;
scanf("%d", &test_case);
for (int i = 0; i < test_case; i++) {
int ninput;
scanf("%d", &ninput);
int l, m, n, flag = 0;
for (l = 1; l < 46; l++) {
for (m = l; m < 46; m++) {
for (n = m; n < 46; n++) {
if (triangle_number[l] + triangle_number[m] + triangle_number[n] > ninput)
break;
if (triangle_number[l] + triangle_number[m] + triangle_number[n] == ninput) {
printf("%d\n", 1);
flag = 1;
break;
}
}
if (flag)
break;
}
if (flag)
break;
}
if (!flag) {
printf("%d\n", 0);
}
}
}
Input이 작아서 무식하게 풀어도 되는 문제로 금방 해결할 수 있었습니다.
Triangle_number는 공식을 쓰기보다는 앞에서부터 쌓아가면 되므로 간단하게 구현할 수 있습니다.
ACM-ICPC 기출문제 포스팅
2019/07/25 - [알고리즘풀이/ACM-ICPC] - [ACM-ICPC][BOJ] 11504 - Wheel of Numbers 문제풀이
2019/07/24 - [알고리즘풀이/ACM-ICPC] - [ACM-ICPC][BOJ] 11501 - Stock 문제풀이
2019/07/24 - [알고리즘풀이/ACM-ICPC] - [ACM-ICPC][BOJ] 13560 - Football Game 문제풀이
2019/07/23 - [알고리즘풀이/ACM-ICPC] - [ACM-ICPC][BOJ] 11497 - Log Jumping 문제풀이
2019/07/23 - [알고리즘풀이/ACM-ICPC] - [ACM-ICPC][BOJ] 11502 - 3Primes Problem 문제풀이
2019/07/21 - [알고리즘풀이/ACM-ICPC] - [ACM-ICPC][BOJ] 13567 - ROBOT 문제풀이
2019/07/21 - [알고리즘풀이/ACM-ICPC] - [ACM-ICPC][BOJ] 13565 - Percolation 문제풀이
2019/07/19 - [알고리즘풀이/ACM-ICPC] - [ACM-ICPC][BOJ] 16360 - Go Latin 코드반성
2019/07/18 - [알고리즘풀이/ACM-ICPC] - [ACM-ICPC][BOJ] 16360 - Go Latin 문제풀이
2019/07/18 - [알고리즘풀이/ACM-ICPC] - [ACM-ICPC][BOJ] 14954 - HAPPY NUMBER 문제풀이
'Problem Solving > ICPC' 카테고리의 다른 글
[ACM-ICPC][BOJ] 16702 - The Silence of the Lamp (0) | 2019.08.01 |
---|---|
[ACM-ICPC][BOJ] 8901 - Chemical Products (0) | 2019.08.01 |
[ACM-ICPC][BOJ] 11504 - Wheel of Numbers 문제풀이 (0) | 2019.07.25 |
[ACM-ICPC][BOJ] 11501 - Stock 문제풀이 (0) | 2019.07.24 |
[ACM-ICPC][BOJ] 13560 - Football Game 문제풀이 (0) | 2019.07.24 |