백준 10757 큰 수 A+B C++

2023. 9. 22. 14:44알고리즘문제 풀이/백준

문제

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

입력

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

출력

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

 

풀이

A, B라는 정수를 받은 후 A + B라고 곧바로 출력하면 틀렸다는 알림이 뜬다!

int, 심지어 long long int 조차 10^10000이라는 범위에 초과하기 때문이다.

이를 위해 A, B를 string으로 입력받아야 한다.

계산할 때에는 각 자리 문자를 숫자로 바꾸고 계산을 한 후 계산된 수를 다시 문자로 바꾼 후 저장한다.

만약 올림이 발생하면 다음 자릿수를 계산할 때 더한다.

 

예시

string n1 = ‘123456’

string n2 = ‘234567’

n1[5] = ‘6’

n2[5] = ‘7’

‘6’ → 6

‘7’ → 7

6 + 7 = 13

13 / 10 = 1 → 따로 저장해서 다음 자릿수 계산할 때 더하기

13 % 10 = 3 → 일의 자릿수 결과값

3 → ‘3’

res = ‘3’

res = ‘320853’

358,023

 

#include <iostream>
#include <string>

using namespace std;

int main() {
	string n1, n2, res, ans;
	cin >> n1 >> n2;
 
	int car = 0;
	int onesize = n1.size();
	int twosize = n2.size();
	while (onesize > 0 || twosize > 0) {
		int nn1 = 0;
		if (onesize > 0) {
			nn1 = n1[--onesize] - '0';
			int nn2 = 0;
			if (twosize > 0) {
				nn2 = n2[--twosize] - '0';
			}
			int cur = nn1 + nn2 + car;
			car = cur / 10;
			cur %= 10;
			char ccar = cur + '0';
			res += ccar;
		}
		if (car > 0) {
			res += car + '0';
		}
		for (int i = res.length() - 1; i >= 0; i--) {
			cout << res[i];
		}
	}
	return 0;
}

'알고리즘문제 풀이 > 백준' 카테고리의 다른 글

백준 10809 알파벳 찾기 Python  (0) 2023.09.22
백준 10808 알파벳 개수 Python  (0) 2023.09.22
백준 10718 We love kriii Python  (1) 2023.09.22
백준 10430 Python  (0) 2023.09.22
백준 10250 ACM호텔 C++  (0) 2023.09.22