https://www.acmicpc.net/problem/4172
- i 가 최대 백만이고 테스트케이스도 여러 개 주어지기 때문에, 피보나치 값들을 dp 로 구하듯이 푼다.
- 재귀적으로 풀면 sqrt, log, sin 3개 값으로 뻗어나가기 때문에 시간이 어마어마하게 걸릴 듯 하다.
- [ ] 처럼 생긴 특이한 기호는 내림을 뜻하기 때문에 int 형변환으로 잘라주었다.
#include <iostream>
#include <cmath>
using namespace std;
int cur;
int values[1000001] = {1};
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
for(int i = 1 ; i <= 1000000 ; i++) // 미리 dp 배열 구해놓기
{ // 주어진 수식에 맞는 값들
values[i] = (values[int(i-sqrt(i))] + values[int(log(i))] + values[int(i*sin(i)*sin(i))]) % 1000000;
}
cin >> cur;
while(cur != -1) // -1 이 나올 때 까지 인덱스를 입력받아서 출력
{
cout << values[cur] << '\n';
cin >> cur;
}
}
'PS > BOJ' 카테고리의 다른 글
[백준] 21772 : 가희의 고구마 먹방 (0) | 2021.07.01 |
---|---|
[백준] 9553 : 양궁 (0) | 2021.06.30 |
[백준] 17829 : 222-풀링 (0) | 2021.06.28 |
[백준] 20040 : 사이클 게임 (0) | 2021.06.27 |
[백준] 2143 : 두 배열의 합 (0) | 2021.06.26 |