입력 코드
#include<stdio.h>
#define A 0
#define B 1
int calLength(char *str) {
int length = 0;
for (int i = 0; str[i] != NULL; i++) {
length++;
}
return length;
}
int main() {
char strA[10001], strB[10001], result[10002];
int len[2];
int longer, shorter;
int t = 0, i, j;
int sum, carry = 0;
scanf("%s %s", strA, strB);
len[A] = calLength(strA);
len[B] = calLength(strB);
if (len[A]>len[B]) {
longer = A, shorter = B;
}
else longer = B, shorter = A;
i = len[longer] - 1, j = len[shorter] - 1;
while (i >= 0) {
sum = 0;
if (longer == A) {
if (i >= 0) sum += strA[i] - '0';
if (j >= 0) sum += strB[j] - '0';
}
else {
if (i >= 0) sum += strB[i] - '0';
if (j >= 0) sum += strA[j] - '0';
}
sum += carry;
if (sum > 9) sum -= 10, carry = 1;
else carry = 0;
result[t++] = sum + '0';
i--, j--;
}
if (carry > 0) {
result[t] = carry + '0';
len[longer]++;
result[len[longer]] = NULL;
}
else {
result[len[longer]] = NULL;
}
for (int i = len[longer] - 1; i >= 0; i--) {
printf("%c", result[i]);
}
printf("\n");
return 0;
}
코드 설명
#배열
↓↓↓ 참고한 사이트
10757)큰 수 A+B
https://www.acmicpc.net/problem/10757 두 수를 더해 그 결과를 출력하는 쉬운 문제처럼 보이지만 더하는 두 수가 10^10000보다 작다. int나 long long 타입으로 위처럼 큰 수를 다룰 수 없기 때문에 문자열로..
beyond1.tistory.com
[백준 BOJ] 10757 큰 수 A+B
링크 https://www.acmicpc.net/problem/10757 풀이 숫자를 자릿수마다 배열에 담습니다. 반복문을 이용해서 한 자리씩 계산해줍니다. 여기서 carry bit를 만들어서 받아올림을 구현해줍니다. 마지막에 출력해
jaemin8852.tistory.com
문제 출처
10757번: 큰 수 A+B
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
'C' 카테고리의 다른 글
#42. [백준_C언어] 4153 : 직각삼각형 (0) | 2021.01.21 |
---|---|
#41. [백준_C언어] 3009 : 네 번째 점 (0) | 2021.01.21 |
#39. [백준_C언어] 2839 : 설탕 배달 (0) | 2021.01.20 |
#38. [백준_C언어] 2775 : 부녀회장이 될테야 (0) | 2021.01.19 |
#37. [백준_C언어] 2869 : 달팽이는 올라가고 싶다 (0) | 2021.01.19 |