Problem Solving/Baekjoon
[백준] 4172 sqrt log sin - Dynamic Programming / Java
graycode
2023. 9. 27. 15:09
• 문제 링크
4172번: sqrt log sin
입력은 여러 개의 테스트 케이스로 이루어져 있으며, 한 줄에 하나씩 주어진다. 각 줄에는 \(i\)가 주어지며, 이 수는 0보다 작지 않고, 백만보다 크지 않다. 입력의 마지막 줄에는 -1이 주어지며,
www.acmicpc.net
• 풀이 코드
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int[] dp = new int[1000001];
dp[0] = 1;
for (double i = 1; i < dp.length; i++)
dp[(int) i] = (dp[(int) (i - Math.sqrt(i))] + dp[(int) Math.log(i)] + dp[(int) (i * Math.pow(Math.sin(i), 2))]) % 1000000;
int n;
while ((n = read()) != -1) sb.append(dp[n]).append("\n");
bw.write(sb.toString());
bw.flush();
}
private static int read() throws IOException {
int c, n = System.in.read() & 15;
boolean flag = n == 13;
if (flag) n = System.in.read() & 15;
while ((c = System.in.read()) > 32) n = (n << 3) + (n << 1) + (c & 15);
return flag ? ~n + 1 : n;
}
}