28828번: Упражнения в умножении (acmicpc.net) a1a2...anb1b2...bm과 106 이하로 차이나는 정수를 구하는 문제 n,m이 105까지이고, ai,bi가 109이라 단순하게 곱하고 나누면 시간초과가 난다 v1 = 1for i in range(n): v1 *= A[i]v2 = 1for j in range(m): v2 *= B[j]print(v1//v2) 곱셈을 덧셈으로 바꾸는 대표적인 방법이 로그를 취하는 것이다 a1a2...anb1b2...bm=X라고 하면 $$logX = log(a_{..
두 자연수 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째자리까지만 표현할 수 있다...
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.