PS/BOJ
[백준] 4172 : sqrt log sin
bconfiden2
2021. 6. 29. 10:28
https://www.acmicpc.net/problem/4172
4172번: sqrt log sin
입력은 여러 개의 테스트 케이스로 이루어져 있으며, 한 줄에 하나씩 주어진다. 각 줄에는 \(i\)가 주어지며, 이 수는 0보다 작지 않고, 백만보다 크지 않다. 입력의 마지막 줄에는 -1이 주어지며,
www.acmicpc.net
- 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;
}
}