Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 쿠쉬쿠쉬
- 단지번호붙이기
- 알고리즘
- 운영체제
- 고득점Kit
- 문제풀이
- LV.3
- Lv.1
- Lv.2
- 프로그래머스
- BruteForceSearch
- Algorithm
- 이분그래프판별
- C++
- Java
- 면접질문
- 파이썬
- Python
- 해시
- 동적계획법
- 코딩테스트
- OS
- hash
- 그래프
- 코테준비
- BFS
- C
- 코딩테스트준비
- 2색칠하기
Archives
- Today
- Total
쿠쿠의기록
6. 큰 자릿수 곱셈 본문
문제
두 자연수가 주어질 때 그들의 곱셈을 계산하는 프로그램을 작성하시오. 각 수는 1 이상 10^100 미만의 범위를 가진다.
입력
첫 번째 줄과 두 번째 줄에 각각 하나의 자연수가 주어진다.
출력
첫 번째 줄에 곱셈의 결과를 출력한다.
예제 입력
123112981293812938139
1298928491101221811
예제 출력
159914959026945386297336486942660549729
문제풀이
#include <stdio.h>
#include <string.h>
char c[500],d[500];
int cc[500],dd[500];
int result[500];
int main(){
scanf("%s %s",&d,&c);
for(int i = 500-strlen(d); i<500; i++){
dd[i] = d[strlen(d)-500+i] - '0';
}
for(int i = 500-strlen(c); i<500; i++){
cc[i] = c[strlen(c)-500+i] - '0';
}
for(int i = 499; i>strlen(d); i--){
int k = 499;
int t = 0;
for(int j = 0; j<strlen(c); j++){
result[i-t] += dd[i]*cc[k];
if(result[i] > 9){
result[i-1-t] += result[i-t]/10;
result[i-t] = result[i-t]%10;
}
k--; t++;
}
}
int n = 0;
while(result[n]==0){
n++;
}
for(int i = n; i<500;i++){
printf("%d",result[i]);
}
}
'알고리즘 > L6 문자열' 카테고리의 다른 글
6. 문자열 포함관계 조사 (0) | 2020.07.30 |
---|---|
6. 문자열 정렬 (0) | 2020.07.30 |
6. 큰 자릿수 뺄셈 (0) | 2020.07.30 |
6. 큰 자릿수 덧셈 (0) | 2020.07.30 |
6. 대소문자 변환 (0) | 2020.07.30 |