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;
    }
}

'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

+ Recent posts