- 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];
}