Submission

Status:
PPPPPPP-P

Score: 96

User: Monasm

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.001 second

Submitted On: 2024-10-03 20:58:12

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

int main () {
    int base;
    scanf("%d",&base);
    int converttoten1 =0;
    int converttoten2 =0;
    char num1[100];
    char num2[100];
    scanf("%s",num1);
    scanf("%s",num2);
    int size1 = strlen(num1);
    int size2 = strlen(num2);

    //convert num 1 to base 10
    for (int i = 0;i<size1;i++) {
        if (base<=10) {
            int temp1 = num1[i] - '0';
            converttoten1 += temp1 * (int)pow(base,size1-i-1);
        } if (base<=16 && base>10) {
            if ('A' <= num1[i] && num1[i] <= 'F') {
                int temp1 = num1[i] - '7';
                converttoten1 += temp1 * (int)pow(base,size1-i-1);
            }
            if ('0' <= num1[i] && num1[i] <= '9') {
                int temp1 = num1[i] - '0';
                converttoten1 += temp1 * (int)pow(base,size1-i-1);
            }
        }
    }
    // convert num 2 to base 10
    for (int i = 0;i<size2;i++) {
        if (base<=10) {
            int temp2 = num2[i] - '0';
            converttoten2 += temp2 * (int)pow(base,size2-i-1);
        } if (base<=16 && base>10) {
            if ('A' <= num2[i] && num2[i] <= 'F') {
                int temp2 = num2[i] - '7';
                converttoten2 += temp2 * (int)pow(base,size2-i-1);
            }
            if ('0' <= num2[i] && num2[i] <= '9') {
                int temp2 = num2[i] - '0';
                converttoten2 += temp2 * (int)pow(base,size2-i-1);
            }
        }
    }

    int sum = converttoten1 + converttoten2;
    int quo = sum;
    int converttobase[10000];
    int count = 0;
    // sum (base 10) to base
    if (base<=10) {
        for (int i =0;quo>0;i++) {
            int temp3 = quo%base;
            quo = quo/base;
            converttobase[i] = temp3 + 48;
            count++;
        }
    }
    else if (base>=10) {
        for (int i =0;quo>0;i++) {
            int temp4 = quo%base;
            quo = quo/base;
            if (temp4 <= 9) {
                converttobase[i] = temp4 + 48;
                count++;

            } else if (temp4 >= 10 && temp4 <= 16) {
                converttobase[i] = temp4 - 10 + 'A';
                count++;
            }
        } // collect correct
    }
    int size3 = count;
    for (int i = 0;i<size3;i++) {
        printf("%c",converttobase[size3-i-1]);
    }
}