Loading...
2023. 4. 8. 03:12

파이썬 실수 오차 없이 정확하게 계산하게 해주는 Decimal

1. 문제 12727번: Numbers (Small) (acmicpc.net) 12727번: Numbers (Small) The first line of input gives the number of cases, T. T test cases follow, each on a separate line. Each test case contains one positive integer n. Limits 1

2023. 4. 8. 01:49

되도록이면 실수로 알고리즘을 풀지 말아야하는 이유1

1. 문제 27496번: 발머의 피크 이론 (acmicpc.net) 27496번: 발머의 피크 이론 각 시간에 따른 혈중 알코올 농도는 {0.045, 0.089, 0.133, 0.131, 0.127}이다. 따라서 지금으로부터 2시간 후와 3시간 후, 총 두 시간 동안 혈중 알코올 농도를 유지할 수 있다. www.acmicpc.net 2. 풀이 혈중 알코올 농도는 알코올 양 정수 * 0.001로 정의한다고 하니까, 정수 배열로 주어지는 배열을 왼쪽부터 순회하면서, 0.001을 곱한 다음 합해나가면서, 매 인덱스마다 0.129와 0.138사이에 몇번이나 있었는지 세면 될것 O(N)에 해결하기 위해 prefix sum을 사용한다. 그런데 시간 L 이후에는, L 전에 먹었던 알코올이 사라지므로... 최초로 술을..

2023. 2. 21. 21:56

[Java]분수를 소수점 20째자리까지 출력하는 방법

두 자연수 a,b를 입력받아 a/b를 소수점 20째자리까지 출력하라고 한다면 어떻게 해야할까? 일단 생각할 수 있는 방법은 %.20f 로 a/b를 출력하는 것이다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=sc.nextInt(); System.out.printf("%.20f",(double)a/b); } } 근데 이렇게 하면 정답이 아니다 왜 이런 문제가 발생하냐면 자바에서 float 타입은 소수점 아래 9째자리까지 표현할 수 있고 double 타입은 18째자리까지만 표현할 수 있다...