Problem Solving/BOJ(백준)
[BOJ]백준 15353번: 큰 수 A + B (2)
이진2
2019. 7. 10. 15:19
https://www.acmicpc.net/problem/15353
15353번: 큰 수 A+B (2)
첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)
www.acmicpc.net
단순히 a+b를 계산하면 되는 문제이지만, a와 b의 범위가 정수형 자료형이 저장할 수 있는 범위를 한~참 넘기 때문에 일반적인 더하기 기호를 쓰면 안된다.
대신에 아주 고전적인 더하기 방법을 사용해야 함 ㅎㅎ
각각의 숫자를 문자열에 저장하고, 맨 마지막 숫자부터 더하기 연산을 해준다
각 자리수의 덧셈 결과가 10 이상이면 다음 자리수에 +해주기
두 숫자의 자리수가 각각 다른 경우까지 고려해줘서 조건을 추가해줘야 한다
#include <cstdio>
#include <string.h>
int main() {
int n1, n2, idx=0, p=0, s1, s2, ans[10001];
char c1[10001], c2[10001];
scanf("%s%s", c1, c2);
s1 = strlen(c1); s2 = strlen(c2);
while (s1||s2||p) {
if (s1) n1 = c1[(s1--) - 1]-'0';
if (s2) n2 = c2[(s2--) - 1]-'0';
ans[idx++] = (n1 + n2 + p) % 10;
p = n1 + n2 + p > 9 ? 1 : 0;
n1 = n2 = 0;
}
for (int i = idx-1; i >= 0; i--)printf("%d", ans[i]);
return 0;
}