Submission

Status:
PPPPPPPPP

Score: 100

User: www._.

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.003 second

Submitted On: 2025-04-05 10:00:40

#include <iostream>
#include <string>
using namespace std;

int chartonum(char num)
{
  if (num >= 'A' && num <= 'z')
  {
    return num - 'A' + 10;
  }
  else
  {
    return num - '0';
  }
}

char numtochar(int num)
{
  if (num >= 0 && num <= 9)
  {
    return num + '0';
  }
  else
  {
    return num + 'A' - 10;
  }
}

int main() 
{
  int base;
  string n, m;
  string a;
  cin >> base >> n >> m;

  int tod, ans, sum;
  sum = tod = 0;
  int i = n.length() - 1;
  int j = m.length() - 1;

  while (i >= 0 && j >= 0)
  {
    sum = chartonum(n[i]) + chartonum(m[j]) + tod;
    tod = sum / base;
    ans = sum % base;
    a.push_back(numtochar(ans));
    i--;
    j--;
  }

  while (j >= 0)
  {
    sum = chartonum(m[j]) + tod;
    tod = sum / base;
    ans = sum % base;
    a.push_back(numtochar(ans));
    j--;
  }

  while (i >= 0)
  {
    sum = chartonum(n[i]) + tod;
    tod = sum / base;
    ans = sum % base;
    a.push_back(numtochar(ans));
    i--;
  }

  if (tod != 0)
  {
    a.push_back(numtochar(tod));
  }

  // reverse the string to get final result
  for (int k = a.length() - 1; k >= 0; k--)
  {
    cout << a[k];
  }
  cout << endl;

  return 0;
}