큰 수 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'을 더하고 빼면서 정수 연산을 할 수 있도록 했다.
'백준 단계별로 풀어보기 > 기본 수학 1' 카테고리의 다른 글
백준 2839 설탕 배달 (1) | 2022.10.07 |
---|---|
백준 10250 ACM 호텔 (1) | 2022.10.05 |
백준 2775 부녀회장이 될테야 (1) | 2022.10.05 |
백준 1193 분수찾기 (0) | 2022.10.04 |
백준 2869 달팽이는 올라가고 싶다 (0) | 2022.09.20 |