배열이 나타내는 숫자는 숫자의 각 자릿수가 배열의 요소로 표현되는 형식으로 저장됩니다. 예를 들어,
Number 234 in array is {2,3,4}. 이러한 숫자에 더하기 위해 먼저 최하위 자릿수에 숫자를 추가하고 합이 10보다 크면 캐리를 전파합니다. 그런 다음 동일한 절차를 수행하고 합계를 찾는 배열의 다음 연속 숫자로 이동합니다.
두 개의 숫자를 더하는 예를 들어 보겠습니다 -
a = {2,9, 6}
b = {6, 3, 8}
Output: 934 설명 − 캐리를 전파하는 숫자의 최하위 숫자, 즉 6+8 =14를 추가한 다음 동일한 9+3+1 =13에 대해 캐리를 다음으로 다시 전파합니다. 다음 합은 2+6+1 =9가 됩니다. 합은 934가 됩니다.
알고리즘
배열로 저장된 숫자의 합을 찾기 위해. 우리는 먼저 숫자가 더 많은 자릿수를 가지고 있는지 확인할 것입니다. 그렇다면 우리는 더 작은 숫자의 자릿수까지 합을 찾은 다음 더 큰 숫자의 자릿수를 더할 것입니다.
또한, 합계에서 발생할 수 있고 전달해야 하는 캐리를 추적하는 캐리 번호를 확인할 것입니다. 처음에는 0이 되고 모든 합계 반복 전에 0이 됩니다. 숫자의 합을 하나씩 찾아 배열에 저장하고 출력합니다.
예시
#include <iostream>
using namespace std;
int Sum(int a[], int b[], int n, int m){
int sum[n];
int i = n - 1, j = m - 1, k = n - 1;
int c = 0, s = 0;
while (j >= 0) {
s = a[i] + b[j] + c;
sum[k] = (s % 10);
c = s / 10;
k--;
i--;
j--;
}
while (i >= 0) {
s = a[i] + c;
sum[k] = (s % 10);
c = s / 10;
i--;
k--;
}
for (int i = 0; i <= n-1; i++) {
cout<<sum[i];
}
}
int main(){
int a[] = { 5, 6, 9 };
int b[] = { 3, 8 };
int n = sizeof(a) / sizeof(a[0]);
int m = sizeof(b) / sizeof(b[0]);
cout<<"The sum is ";
if (n >= m)
Sum(a, b, n, m);
else
Sum(b, a, m, n);
return 0;
} 출력
The sum is 607