쿠쿠의기록

6. 큰 자릿수 곱셈 본문

알고리즘/L6 문자열

6. 큰 자릿수 곱셈

쿠쿠트레인 2020. 7. 30. 09:45

문제


두 자연수가 주어질 때 그들의 곱셈을 계산하는 프로그램을 작성하시오. 각 수는 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