728x90
반응형

큰 수 A+B 

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)

출력

첫째 줄에 A+B를 출력한다.

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
#include <stdio.h>
#include <string.h>
 
void reverse(char* array){
    int size = strlen(array);
    for(int i=0; i<size/2; i++){
        char temp = array[i];
        array[i] = array[size-i-1];
        array[size-i-1]=temp;
        
    }
    
}
 
 
int main()
{
    char a[10001]=0 },b[10001= {0};
    char result[10002={0};
    int len;
    scanf("%s %s",a,b);
    //printf("%s %s\n\n",a,b);
    reverse(a); reverse(b);
    //printf("%s %s",a,b);
    len = (strlen(a)>strlen(b) ? strlen(a):strlen(b));
    //printf("%d",len);
    int carry = 0;
    for(int i=0; i<len; i++){
        int sum = a[i]-'0'+b[i]-'0'+carry;
        if(sum<0) sum=sum+'0';
        if(sum>9) carry = 1;
        else carry=0;
        result[i] = sum%10 + '0';
    }
    if(carry==1) result[len] ='1';
    reverse(result);
    printf("%s",result);
    
    return 0;
}
cs

결국은 문자열을 입력받고 뒤집어 주는 과정이 필요한 것 같다.

reverse() 함수를 만드는게 만들지 않고 자리수 맞춰 계산하는 것 보다 훨씬 간단하다

 

뒤집은 다음 긴문자열 길이를 기준으로 0 index 부터 더해나가면 된다

char 형이므로 '0'을 더하고 빼면서 정수 연산을 할 수 있도록 했다.

반응형

+ Recent posts