728x90
문제
두 자연수가 주어질 때 그들의 곱셈을 계산하는 프로그램을 작성하시오. 각 수는 1 이상 10^100 미만의 범위를 가진다.
입력
첫 번째 줄과 두 번째 줄에 각각 하나의 자연수가 주어진다.
출력
첫 번째 줄에 곱셈의 결과를 출력한다.
예제 입력
123112981293812938139
1298928491101221811
예제 출력
159914959026945386297336486942660549729
// 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws Exception {
// Please Enter Your Code Here
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] s1 = br.readLine().split("");
String[] s2 = br.readLine().split("");
int[] n = new int[s1.length];
int[] m = new int[s2.length];
int[] result = new int[s1.length + s2.length];
int nLen = s1.length;
int mLen = s2.length;
for(int i=nLen-1, idx=0; i>=0; i--, idx++) {
n[idx] = Integer.parseInt(s1[i]);
}
for(int i=mLen-1, idx=0; i>=0; i--, idx++) {
m[idx] = Integer.parseInt(s2[i]);
}
for(int i=0; i<nLen; i++) {
for(int j=0; j<mLen; j++) {
result[i+j] += n[i]*m[j];
}
}
for(int i=0; i<(nLen+mLen); i++) {
if(i<(nLen+mLen-1) && result[i] >= 10) {
result[i+1] += result[i]/10;
result[i] %= 10;
}
}
boolean flag = false;
for(int i=(nLen+mLen-1); i>=0; i--) {
if(result[i]!=0) flag=true;
if(flag) {
System.out.print(result[i] + "");
}
}
}
}
|
cs |
반응형
'CS > 알고리즘_문제풀이(자바)' 카테고리의 다른 글
문자열 포함관계 조사 (0) | 2021.09.14 |
---|---|
문자열 정렬 (0) | 2021.09.14 |
날짜 계산 (0) | 2021.09.14 |
일곱 난쟁이 (0) | 2021.09.14 |
큰 자릿수 뺄셈 (0) | 2021.09.13 |