이 문제에서는 두 개의 큰 숫자를 정의하는 두 개의 문자열이 제공됩니다. 우리의 임무는 두 개의 큰 수의 합을 찾는 프로그램을 만드는 것입니다.
문제를 이해하기 위해 예를 들어 보겠습니다.
Input: number1 = “341299123919” number2 = “52413424” Output: 341351537343
이 문제를 해결하기 위해 두 문자열을 모두 탐색합니다. 그리고 자릿수를 추가하고 캐리를 전파하십시오. 그리고 결과 숫자를 숫자로 합산 문자열에 저장합니다.
알고리즘
Initialize sum = 0, carry = 0. Step 1: loop from n to 0. Step 1.1: intSum = number1[i] + number2[i] Step 1.2: carry = intSum/10. Sum += intSum Step 2: sum += carry. Step 3: return sum.
예
솔루션의 작동을 설명하는 프로그램,
#include<bits/stdc++.h>
using namespace std;
string addBigNumbers(string number1, string number2) {
if (number1.length() > number2.length())
swap(number1, number2);
string sum = "";
int len1 = number1.length();
int len2 = number2.length();
int digitDiff = len2 - len1;
int carry = 0;
int intSum;
for (int i=len1-1; i>=0; i--) {
intSum = ((number1[i]-'0') + (number2[i+digitDiff]- '0') + carry);
sum.push_back(intSum%10 + '0');
carry = intSum/10;
}
for (int i=digitDiff-1; i>=0; i--) {
intSum = ((number2[i]-'0')+carry);
sum.push_back(intSum%10 + '0');
carry = intSum/10;
}
if (carry)
sum.push_back(carry+'0');
reverse(sum.begin(), sum.end());
return sum;
}
int main() {
string number1 = "235235823852";
string number2 = "45230820348";
cout<<"Sum of two large numbers is "<<addBigNumbers(number1,x number2);
return 0;
} 출력
Sum of two large numbers is 280466644200