Submission

Status:

PPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: PROb221

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-06 21:49:17

#include <iostream>
#include <string>
#include <cstring>
#include <vector>
using namespace std;
int convert(int a) {
  if(a>=65) {
    return (int)a-55;
  }
  else {
    return (int)a-48;
  }
}

int main() 
{
    int base;
    char c='A';
    string x,y;
    cin>>base>>x>>y; // must x>y
    int l1=x.length();
    int l2=y.length();
    if(l1<l2) {
      swap(l1,l2);
      swap(x,y);
    }
    vector<int> arr(l1+1,0);
    vector<int> num1(l1+1,0);
    vector<int> num2(l1+1,0);
    int i;
    for(i=0;i<l1;i++) {
      num1[i]+=convert(x[l1-i-1]);
    }
    for(i=0;i<l2;i++) {
      num2[i]+=convert(y[l2-i-1]);
    }
    for(i=0;i<l1+1;i++) {
      arr[i]+=num1[i]+num2[i];
    }
    int tod=0;
    for(i=0;i<l1+1;i++) {
      arr[i]+=tod;
      tod=0;
      while(arr[i]>=base) {
        arr[i]-=base;
        tod++;
      }
    }
    for(i=l1;i>=0;i--) {
      if(i==l1&&arr[i]==0){continue;}
      if(arr[i]>=10) {
        cout << (char)(c+arr[i]-10);
      }
      else {
        cout << arr[i];
      }
    }
    return 0;
}