Submission
Status:
P-----PP-
Subtask/Task Score:
36/100
Score: 36
User: PROb221
Problemset: บวกเลขฐาน
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-06 18:35:09
#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);
}
//rent 1 more space from min case
vector<int> arr(max(l1,l2)+1,0);
//calculate
for(i=0;i<l2;i++) {
arr[i]=add(x[l1-i-1],y[l2-i-1],base);
}
//calculate
for(i=l2;i<l1;i++) {
arr[i]=add(x[l1-i-1],0,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(arr[i]!=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;
}