• toc {:toc}

๋ฌธ์ œ

๋‘ ์ •์ˆ˜ A์™€ B๋ฅผ ์ž…๋ ฅ๋ฐ›์€ ๋‹ค์Œ, A+B๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— A์™€ B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 < A,B < 1010000)

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— A+B๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1

9223372036854775807 9223372036854775808

์˜ˆ์ œ ์ถœ๋ ฅ 1

18446744073709551615

์ถœ์ฒ˜:https://www.acmicpc.net/problem/10757

ํ’€์ด

string ํ˜•ํƒœ๋กœ ๋ฐ›์•„ int๋กœ ํ˜•๋ณ€ํ™˜ โ†’์•„์Šคํ‚ค์ฝ”๋“œ ์ด์šฉ

intํ˜•์œผ๋กœ ๋ง์…ˆ ํ›„ ์ถœ๋ ฅ, ๋ง์…ˆ ์‹œ ์˜ฌ๋ฆผ์— ์ฃผ์˜ํ•˜์—ฌ ์ฝ”๋”ฉ.

โ€ป string, vector ๊ณต๋ถ€ ๋‹ค์‹œํ•ด์•ผ ํ•  ๋“ฏ. +ํ˜•๋ณ€ํ™˜์— ๊ด€ํ•ด ์ถ”๊ฐ€ ๊ณต๋ถ€ ํ•„์š”

#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
//48
void bigNum(string A, string B);
 
int main() 
{
  	string A, B;
	cin >> A >> B;
	
	bigNum(A, B);
	
	
	return 0;
}
 
void bigNum(string A, string B)
{
	int lenA = A.length();
	int lenB = B.length();
	int len, sum;
	int iA[10001], iB[10001];
	vector<int> res;
	bool roundUp = false;
	
	// ์ž๋ฆฟ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒƒ์„ A๋กœ
	if(lenA < lenB)
	{
		swap(A, B);
		lenA = A.length();
		lenB = B.length();
	}
	len = lenA;		// ์ตœ๋Œ€ ๊ธธ์ด
	
	for(int i = 0; i<lenA; i++)
		iA[i+1] = A.at(i)-'0';
	
	for(int i = 0; i<lenB; i++)
		iB[i+1+(lenA-lenB)] = B.at(i)-'0';
	
	for(int i = len; i>0; i--)
	{
		sum = iA[i]+iB[i];
		if(roundUp)
			sum+=1;
		
		roundUp=false;
		
		if(sum > 9)
		{
			roundUp=true;
			res.push_back(sum % 10);
		}
		else
		{
			res.push_back(sum);
		}
	}
	
	if(roundUp)
		cout << 1;
	for(int i=res.size()-1; i>=0; i--)
		cout << res[i];
	
}