Submission

Status:

P----PPPP

Subtask/Task Score:

60/100

Score: 60

User: Quaoar

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-10 19:32:17

#include <stdio.h>

int pw(int a , int b){
    int product = a;
    if (b == 0){
        return 1;
    }
    for (int i = 0 ; i < b - 1; i++){
        product = product * a;
    }  
    return product;
}

int main() {
    int base;
    char str1[20];
    char str2[20];
    scanf("%d" , &base);
    scanf("%s" , str1);
    scanf("%s" , str2);
    int i = 0;
    int len1 , len2;
    while (str1[i] != '\0'){
        i++;
        len1 = i;
    }
    i = 0;
    while (str2[i] != '\0'){
        i++;
        len2 = i;
    }
    int sum1 = 0 , sum2 = 0;
    for (int i = 0 ; i < len1 ; i++){
         if (str1[i] - '0' > 9){
            sum1 += (str1[i] - '0' - 7) * pw(base , len1 - 1 -i);
        } else {
            sum1 += (str1[i] - '0') * pw(base , len1 - 1 - i);
        }
    }
    
    for (int i = 0 ; i < len2 ; i++){
         if (str2[i] - '0' > 9){
            sum2 += (str2[i] - '0' - 7) * pw(base , len2 - 1 -i);
        } else {
            sum2 += (str2[i] - '0') * pw(base , len2 - 1 - i);
        }
    }
    
    if (base <= 10){
        int lowbase[20];
        int dec = sum1 + sum2;
        int cnt2;
        
        for (int i = 0 ; i < 20 ; i++){
            lowbase[i] = dec % base;
            dec = dec / base;
            if (dec == 0){
                cnt2 = i;
                break;
            }
        }
        
        for (int i = 0 ; i < cnt2 + 1; i++){
            printf("%d" , lowbase[cnt2 - i ]);
        }  
    } else {
        char highbase[20];
        int dec = sum1 + sum2;
        int cnt2;
        
        for (int i = 0 ; i < 20 ; i++){
            if (dec % base > 10){
                highbase[i] = (char)((dec % base) + 55);
            } else {
                highbase[i] = (dec % base) + '0' ;
            }
            dec = dec / base;
            if (dec == 0){
                cnt2 = i;
                break;
            }
        }
        for (int i = 0 ; i < cnt2 + 1; i++){
            printf("%c" , highbase[cnt2 - i ]);
        }  
    }
    return 0;
}