using
System;
using
System.Collections.Generic;
class
GFG {
static
string
Reverse(
string
s)
{
char
[] charArray = s.ToCharArray();
Array.Reverse(charArray);
return
new
string
(charArray);
}
static
int
dec_to_base(
int
num,
int
base1)
{
string
base_num =
""
;
while
(num > 0) {
int
dig = ((num % base1) + base1) % base1;
if
(dig < 10)
base_num += Convert.ToString(dig);
else
{
base_num += (
'A'
+ (dig - 10));
}
num = (num / base1);
}
base_num = Reverse(base_num);
return
Convert.ToInt32(base_num);
}
static
string
sumBase(
string
a,
string
b,
int
base1)
{
int
len_a = a.Length;
int
len_b = b.Length;
string
s =
""
;
string
sum =
""
;
int
diff = Math.Abs(len_a - len_b);
for
(
int
i = 1; i < diff + 1; i++) {
s +=
"0"
;
}
if
(len_a < len_b)
a = s + a;
else
b = s + b;
int
carry = 0;
for
(
int
i = Math.Max(len_a, len_b) - 1; i >= 0;
i--) {
int
a1 = a[i] -
'0'
;
int
b1 = b[i] -
'0'
;
int
curr = carry + a1 + b1;
carry = (curr / base1);
curr = (curr % base1 + base1) % base1;
sum = Convert.ToString(curr) + sum;
}
if
(carry > 0)
sum = Convert.ToString(carry) + sum;
return
sum;
}
public
static
void
Main(
string
[] args)
{
string
a =
"123"
;
string
b =
"234"
;
int
base_a = 6;
int
base_b = 8;
int
min_Base = 0;
if
(base_a > base_b) {
min_Base = base_b;
int
a10 = Convert.ToInt32(a, base_a);
a = Convert.ToString(dec_to_base(a10, base_b));
}
else
{
min_Base = base_a;
int
b10 = Convert.ToInt32(b, base_b);
b = Convert.ToString(dec_to_base(b10, base_a));
}
string
sum = sumBase(a, b, min_Base);
Console.WriteLine(sum);
}
}