문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)
출력
첫째 줄에 A+B를 출력한다.
풀이 과정
문자열을 이용해서 표현 범위를 벗어난 수를 연산할 수 있다. 일의 자리수부터 계산하면서 올림수를 따로 저장하는 일반적인 덧셈 방식을 직접 구현해주면 된다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char a[10005];
char b[10005];
char c[10005];
int plus = 0;
int main(void) {
scanf("%s %s", a, b);
int a_idx = strlen(a) - 1;
int b_idx = strlen(b) - 1;
int c_size = 0;
while (!(a_idx < 0 && b_idx < 0 && plus == 0)) {
int now = 0;
if (a_idx >= 0)
now += a[a_idx--] - '0';
if (b_idx >= 0)
now += b[b_idx--] - '0';
plus += now;
c[c_size++] = (plus % 10) + '0';
plus /= 10;
}
c_size -= 1;
while (c_size >= 0) {
printf("%c", c[c_size--]);
}
return 0;
}
'-- 예전 기록 > BOJ' 카테고리의 다른 글
[ BOJ ] 20944 : 팰린드롬 척화비 ( BRONZE 3 ) / Python (0) | 2023.06.24 |
---|---|
[ BOJ ] 10926 : ??! ( BRONZE 5 ) / C, C++, Python, Java (0) | 2023.06.24 |
[ BOJ ] 10869 : 사칙연산 ( BRONZE 5 ) / C, C++, Python, Java (0) | 2023.06.20 |
[ BOJ ] 11899 : 괄호 끼워넣기 ( SILVER 3 ) / Python (0) | 2023.06.18 |
[ BOJ ] 1008 : A/B ( BRONZE 5 ) / C, C++, Python, Java (1) | 2023.06.18 |