Submission

Status:

PPPPPPP-P

Subtask/Task Score:

96/100

Score: 96

User: qwerty_qaz

Problemset: บวกเลขฐาน

Language: c

Time: 0.002 second

Submitted On: 2025-10-11 18:23:58

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int poww(int num, int up){
    int sum = 1;
    if(up ==0) return 1;
    for(int i = 0; i< up; i++){
        sum *= num;
    } return sum;
}

int turn2base10(int base, char num[], int size){
    int sum =0;
    for(int i = size -1; i >=0; i--){
        if(isalpha(num[i])){
            sum += (num[i] - 'A' +10) * poww(base, size -(i+1));
        }else{
            sum += (num[i] - '0') * poww(base, size -(i+1));
        }
    } return sum;
}

void print_base_n(int base, int num){
    char map[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B','C','D','E','F'};
    int keep[32];
    int i =0;
    while (num != 0)
    {
        keep[i] = num % base;
        num /= base;
        i++;
    }
    for(int j = i-1; j>=0; j--){
        printf("%c", map[keep[j]]);
    }
    
}

int main() {
    int base;
    char num1[20], num2[20];
    scanf("%d", &base);
    scanf("%s%s", num1, num2);
    int num = turn2base10(base, num1, strlen(num1)) + turn2base10(base, num2, strlen(num2));
    print_base_n(base, num);
    
    return 0;
}