Submission

Status:

PPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: fillhavertz

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-05 14:42:19

#include <iostream>
#include <vector>
#include <string>
using namespace std;
char a[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
bool p = 0;
int find(char c){
    for(int i = 0;i<16;i++){
        if (c==a[i]) return i;
    }return 0;
}
char pluss(char st,char nd,int n){
    int fr = find(st);
    int sc = find(nd);
    int re = (p)?(fr+sc+1):(fr+sc);
    if(re>=n) p = true;
    else p = false;
    re %= n;
    return a[re];
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int base;
    string text1,text2;
    int len;
    int n;
    cin>>n;
    cin>>text1>>text2;
    string out;
    (text1.length()>text2.length())?len = text1.length():len = text2.length();
    for(int i = 0 ;i<len;i++){
        if(text1.length()-1-i<0) out+= pluss(text2[len-i-1],'0',n);
        else if(text2.length()-1-i<0) out+= pluss(text1[len-i-1],'0',n);
        else out += pluss(text1[text1.length()-1-i],text2[text2.length()-1-i],n);
    }
    if(p)len++,out+='1';

    for(int i = 0 ;i<len;i++) cout<<out[len-i-1];
}