# Program to add two integers of given base

Given three integers X, Y and B, where X and Y are Base-B integers. The task is to find the sum of integers X and Y.

Examples:

```Input: X = 123, Y = 234, B = 6
Output: 401
Explanation:
Sum of two integers in base 6 -
1 1
1 2 3
+    2 3 4
-------------
4 0 1

Input: X = 546, Y = 248 B = 9
Output: 805
Explanation:
Sum of two integers in base 9 -
1 1
5 4 6
+    2 4 8
-------------
8 0 5
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: The idea is to use the fact that whenever two digits of the numbers are added, then the place value will be the modulo of the sum of digits by the base whereas carry will be the integer division of the sum of digits by base. i.e.

```Let two digits of the number be D1 and D2 -
Place Value = (D1 + D2) % B

Carry = (D1 + D2) / B
```

Similarly, Add every digit from the last to get the desired result.

Below is the implementation of the above approach:

## C++

 `// C++ implementation to find the ` `// sum of two integers of base B ` ` `  `#include ` ` `  `using` `namespace` `std; ` ` `  `// Function to find the sum of  ` `// two integers of base B ` `string sumBaseB(string a,  ` `      ``string b, ``int` `base) ` `{ ` `    ``int` `len_a, len_b; ` ` `  `    ``len_a = a.size(); ` `    ``len_b = b.size(); ` ` `  `    ``string sum, s; ` `    ``s = ``""``; ` `    ``sum = ``""``; ` ` `  `    ``int` `diff; ` `    ``diff = ``abs``(len_a - len_b); ` `     `  `    ``// Padding 0 in front of the  ` `    ``// number to make both numbers equal ` `    ``for` `(``int` `i = 1; i <= diff; i++) ` `        ``s += ``"0"``; ` `     `  `    ``// Condition to check if the strings ` `    ``// have lengths mis-match ` `    ``if` `(len_a < len_b) ` `        ``a = s + a; ` `    ``else` `        ``b = s + b; ` ` `  `    ``int` `curr, carry = 0; ` `     `  `    ``// Loop to find the find the sum  ` `    ``// of two integers of base B ` `    ``for` `(``int` `i = max(len_a, len_b) - 1;  ` `                           ``i > -1; i--) { ` `         `  `        ``// Current Place value for  ` `        ``// the resultant sum ` `        ``curr = carry + (a[i] - ``'0'``) +  ` `                       ``(b[i] - ``'0'``); ` ` `  `        ``// Update carry ` `        ``carry = curr / base; ` ` `  `        ``// Find current digit ` `        ``curr = curr % base; ` ` `  `        ``// Update sum result ` `        ``sum = (``char``)(curr + ``'0'``) + sum; ` `    ``} ` `    ``if` `(carry > 0) ` `        ``sum = (``char``)(carry + ``'0'``) + sum; ` `    ``return` `sum; ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` `    ``string a, b, sum; ` `    ``int` `base; ` `    ``a = ``"123"``; ` `    ``b = ``"234"``; ` `    ``base = 6; ` `     `  `    ``// Function Call ` `    ``sum = sumBaseB(a, b, base); ` `    ``cout << sum << endl; ` `    ``return` `0; ` `} `

## Java

 `// Java implementation to find the  ` `// sum of two integers of base B  ` `class` `GFG { ` ` `  `    ``// Function to find the sum of  ` `    ``// two integers of base B  ` `    ``static` `String sumBaseB(String a, String b, ``int` `base)  ` `    ``{  ` `        ``int` `len_a, len_b;  ` `     `  `        ``len_a = a.length();  ` `        ``len_b = b.length();  ` `     `  `        ``String sum, s;  ` `        ``s = ``""``;  ` `        ``sum = ``""``;  ` `     `  `        ``int` `diff;  ` `        ``diff = Math.abs(len_a - len_b);  ` `         `  `        ``// Padding 0 in front of the  ` `        ``// number to make both numbers equal  ` `        ``for` `(``int` `i = ``1``; i <= diff; i++)  ` `            ``s += ``"0"``;  ` `         `  `        ``// Condition to check if the strings  ` `        ``// have lengths mis-match  ` `        ``if` `(len_a < len_b)  ` `            ``a = s + a;  ` `        ``else` `            ``b = s + b;  ` `     `  `        ``int` `curr, carry = ``0``;  ` `         `  `        ``// Loop to find the find the sum  ` `        ``// of two integers of base B  ` `        ``for` `(``int` `i = Math.max(len_a, len_b) - ``1``;  ` `                            ``i > -``1``; i--) {  ` `             `  `            ``// Current Place value for  ` `            ``// the resultant sum  ` `            ``curr = carry + (a.charAt(i) - ``'0'``) +  ` `                        ``(b.charAt(i) - ``'0'``);  ` `     `  `            ``// Update carry  ` `            ``carry = curr / base;  ` `     `  `            ``// Find current digit  ` `            ``curr = curr % base;  ` `     `  `            ``// Update sum result  ` `            ``sum = (``char``)(curr + ``'0'``) + sum;  ` `        ``}  ` `        ``if` `(carry > ``0``)  ` `            ``sum = (``char``)(carry + ``'0'``) + sum;  ` `        ``return` `sum;  ` `    ``}  ` `     `  `    ``// Driver Code  ` `    ``public` `static` `void` `main (String[] args)  ` `    ``{  ` `        ``String a, b, sum;  ` `        ``int` `base;  ` `        ``a = ``"123"``;  ` `        ``b = ``"234"``;  ` `        ``base = ``6``;  ` `         `  `        ``// Function Call  ` `        ``sum = sumBaseB(a, b, base);  ` `        ``System.out.println(sum);  ` `    ``}  ` `} ` ` `  `// This code is contributed by AnkitRai01 `

## Python 3

 `# Python 3 implementation to find the ` `# sum of two integers of base B ` `  `  `# Function to find the sum of  ` `# two integers of base B ` `def` `sumBaseB(a,b,base): ` `  `  `    ``len_a ``=` `len``(a) ` `    ``len_b ``=` `len``(b) ` ` `  `    ``s ``=` `""; ` `    ``sum` `=` `""; ` `  `  `    ``diff ``=` `abs``(len_a ``-` `len_b); ` `      `  `    ``# Padding 0 in front of the  ` `    ``# number to make both numbers equal ` `    ``for` `i ``in` `range``(``1``,diff``+``1``): ` `        ``s ``+``=` `"0"` `      `  `    ``# Condition to check if the strings ` `    ``# have lengths mis-match ` `    ``if` `(len_a < len_b): ` `        ``a ``=` `s ``+` `a ` `    ``else``: ` `        ``b ``=` `s ``+` `b; ` `  `  `    ``carry ``=` `0``; ` `      `  `    ``# Loop to find the find the sum  ` `    ``# of two integers of base B ` `    ``for` `i ``in` `range``(``max``(len_a, len_b) ``-` `1``,``-``1``,``-``1``): ` `          `  `        ``# Current Place value for  ` `        ``# the resultant sum ` `        ``curr ``=` `carry ``+` `(``ord``(a[i]) ``-``ord``(``'0'``)) ``+``( ``ord``(b[i]) ``-` `ord``(``'0'``)); ` `  `  `        ``# Update carry ` `        ``carry ``=` `curr ``/``/` `base ` `  `  `        ``# Find current digit ` `        ``curr ``=` `curr ``%` `base; ` `  `  `        ``# Update sum result ` `        ``sum` `=` `chr``(curr ``+` `ord``(``'0'``)) ``+` `sum` `         `  `    ``if` `(carry > ``0``): ` `        ``sum` `=` `chr``(carry ``+` `ord``(``'0'``)) ``+` `sum``; ` `    ``return` `sum` `  `  `# Driver Code ` ` `  `a ``=` `"123"` `b ``=` `"234"` `base ``=` `6` `      `  `# Function Call ` `sum` `=` `sumBaseB(a, b, base); ` `print``(``sum``) ` ` `  `# This code is contributed by atul_kumar_shrivastava `

## C#

 `// C# implementation to find the  ` `// sum of two integers of base B  ` `using` `System; ` ` `  `class` `GFG { ` ` `  `    ``// Function to find the sum of  ` `    ``// two integers of base B  ` `    ``static` `string` `sumBaseB(``string` `a, ``string` `b, ``int` `base_var)  ` `    ``{  ` `        ``int` `len_a, len_b;  ` `     `  `        ``len_a = a.Length;  ` `        ``len_b = b.Length;  ` `     `  `        ``string` `sum, s;  ` `        ``s = ``""``;  ` `        ``sum = ``""``;  ` `     `  `        ``int` `diff;  ` `        ``diff = Math.Abs(len_a - len_b);  ` `         `  `        ``// Padding 0 in front of the  ` `        ``// number to make both numbers equal  ` `        ``for` `(``int` `i = 1; i <= diff; i++)  ` `            ``s += ``"0"``;  ` `         `  `        ``// Condition to check if the strings  ` `        ``// have lengths mis-match  ` `        ``if` `(len_a < len_b)  ` `            ``a = s + a;  ` `        ``else` `            ``b = s + b;  ` `     `  `        ``int` `curr, carry = 0;  ` `         `  `        ``// Loop to find the find the sum  ` `        ``// of two integers of base B  ` `        ``for` `(``int` `i = Math.Max(len_a, len_b) - 1;  ` `                            ``i > -1; i--) {  ` `             `  `            ``// Current Place value for  ` `            ``// the resultant sum  ` `            ``curr = carry + (a[i] - ``'0'``) +  ` `                        ``(b[i] - ``'0'``);  ` `     `  `            ``// Update carry  ` `            ``carry = curr / base_var;  ` `     `  `            ``// Find current digit  ` `            ``curr = curr % base_var;  ` `     `  `            ``// Update sum result  ` `            ``sum = (``char``)(curr + ``'0'``) + sum;  ` `        ``}  ` `        ``if` `(carry > 0)  ` `            ``sum = (``char``)(carry + ``'0'``) + sum;  ` `        ``return` `sum;  ` `    ``}  ` `     `  `    ``// Driver Code  ` `    ``public` `static` `void` `Main (``string``[] args)  ` `    ``{  ` `        ``string` `a, b, sum;  ` `        ``int` `base_var;  ` `        ``a = ``"123"``;  ` `        ``b = ``"234"``;  ` `        ``base_var = 6;  ` `         `  `        ``// Function Call  ` `        ``sum = sumBaseB(a, b, base_var);  ` `        ``Console.WriteLine(sum);  ` `    ``}  ` `} ` ` `  `// This code is contributed by AnkitRai01 `

Output:

```401
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

2

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.