Submission

Status:

P--PPPPP-

Subtask/Task Score:

72/100

Score: 72

User: PROb221

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.004 second

Submitted On: 2025-10-06 18:19:42

#include <iostream>
#include <vector>
#include <string>
#include <cstring>
using namespace std;
#define ll long long int
ll tod=0;
int add(char x, char y, int base) {
  ll a, b;
  a=(int)x;
  b=(int)y+tod;
  tod=0;
  switch(a) {
case 'A':a=10;break;
case 'B':a=11;break;
case 'C':a=12;break;
case 'D':a=13;break;
case 'E':a=14;break;
case 'F':a=15;break;
default:a=(int)a-48;break;
  }
  switch(b) {
case 'A':b=10;break;
case 'B':b=11;break;
case 'C':b=12;break;
case 'D':b=13;break;
case 'E':b=14;break;
case 'F':b=15;break;
default:b=(int)b-48;break;
  }
  if(a+b>=base) {
    tod=1;
    return a+b-base;
  }
  return a+b;
}
int main() {
  ll base,i,j;
  string x,y;
  cin>>base>>x>>y;
  ll l1 = x.length();//3
  ll l2 = y.length();//4
  if(l1<l2) {
    swap(l1,l2);
    swap(x,y);
  }
  vector<int> arr(max(l1,l2)+1,0);
  for(i=0;i<l2;i++) {
    arr[i]=add(x[l1-i-1],y[l2-i-1],base);
  }
  for(i=l2;i<l1;i++) {
    arr[i]=add(x[l1-i-1],(char)tod+48,base);
  }
  for(i=arr.size()-1;i>=0;i--) {
    if(i!=arr.size()-1)
    switch(arr[i]) {
case 10:cout<<"A";break;
case 11:cout<<"B";break;
case 12:cout<<"C";break;
case 13:cout<<"D";break;
case 14:cout<<"E";break;
case 15:cout<<"F";break;
default:cout<<arr[i];break;
    }
    else if(tod!=0) {
      switch(arr[i]) {
case 10:cout<<"A";break;
case 11:cout<<"B";break;
case 12:cout<<"C";break;
case 13:cout<<"D";break;
case 14:cout<<"E";break;
case 15:cout<<"F";break;
default:cout<<arr[i]+tod;break;
    }
    }
  }
  return 0;
}