알고리즘/L6 문자열

6. 큰 자릿수 덧셈

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

문제


두 자연수가 주어질 때 그들의 덧셈을 계산하는 프로그램을 작성하시오. 각 수는 1 이상 10^100(10의 100 거듭제곱) 미만의 범위를 가진다.  

입력


첫 번째 줄과 두 번째 줄에 각각 하나의 자연수가 주어진다.  

출력


첫 번째 줄에 덧셈의 결과를 출력한다.

 

예제 입력

123112981293812938139

1298928491101221811

예제 출력

124411909784914159950

 

문제풀이

 

#include <stdio.h>
#include <string.h>

char d[200],c[200];
char dd[200],cc[200];
char result[200];

int main(){
  
  scanf("%s %s",&d,&c);
  
  for(int i = 200-strlen(d);i<200;i++){
    dd[i] = d[strlen(d)-200+i]-'0';
  }
  
  for(int i = 200-strlen(c); i<200;i++){
    cc[i] = c[strlen(c)-200+i]-'0';
  }
  
  int max = strlen(d) > strlen(c) ? strlen(d) : strlen(c);
  
  for(int i = 199; i>=199-max; i--){
    result[i] += dd[i] + cc[i];
    if(result[i]>9){
      result[i-1]++;
      result[i] -= 10;
    }
  }
  
  for(int i = 199-max; i<=199; i++){
    if(result[i] == 0 && i == 199-max){
      continue;
    }
    else{
      printf("%d",result[i]);
    }
  }
  
  return 0;
}