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;
}