본문 바로가기

백준

C++[백준]10757번 큰 수 A + B

https://www.acmicpc.net/problem/10757

 

10757번: 큰 수 A+B

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

www.acmicpc.net

 

솔루션


10^10000의 자릿수를 더할려면 C++로는 long long int로 받아도 오버플로우가 일어난다.

 

따라서 문자열로 받아서 덧셈을 해 주어야 한다.

 

1. 각각의 문자열을 입력 받고 뒤집어 준다.

 

2. 문자열의 자릿수를 맞춰주기 위해서 자릿수가 같아질 때 까지 0을 넣어준다.

 

3. 각각의 자릿수를 더해 가며 올림수를 올려준다.

 

 

 

코드


#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

string str1, str2;

string ans;
void sum() {
	
	//문자열 길이 맞추고,
	while (str1.size() != str2.size()) {
		if (str1.size() > str2.size()) {
			str2.push_back('0');
		}
		else str1.push_back('0');
	}

	int sum = 0, carry = 0;
	for (int i = 0; i < str1.size(); i++) {
		sum = str1[i] - '0' + str2[i] - '0' + carry;

		carry = sum / 10;
		sum %= 10;

		ans.push_back((sum + '0'));
	}
	if (carry) ans.push_back((carry + '0'));

	reverse(ans.begin(), ans.end());
	return;
}

int main()
{
	cin >> str1 >> str2;

	//문자열 뒤집고
	reverse(str1.begin(), str1.end());
	reverse(str2.begin(), str2.end());

	sum();
	cout << ans << "\n";

}

'백준' 카테고리의 다른 글

C++[백준]4386번 별자리 만들기  (2) 2023.01.05
C++[백준]17143번 낚시왕  (2) 2023.01.04
C++[백준]10217번 KCM Travel  (0) 2023.01.03
C++[백준]1162번 도로포장  (0) 2023.01.03
C++[백준] 5719 거의 최단 경로  (0) 2022.12.31