Submission
Status:
PPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: wleo.lwo
Problemset: บวกเลขฐาน
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-12 09:41:11
#include <stdio.h>
#include <string.h>
// ฟังก์ชันแปลงตัวอักษรฐานเป็นเลข 0-15
int value(char c) {
if (c >= '0' && c <= '9')
return c - '0';
else if (c >= 'A' && c <= 'F')
return c - 'A' + 10;
else if (c >= 'a' && c <= 'f')
return c - 'a' + 10;
return -1;
}
// ฟังก์ชันแปลงเลข 0-15 กลับเป็นตัวอักษรฐาน
char toChar(int n) {
if (n >= 0 && n <= 9)
return n + '0';
else
return n - 10 + 'A';
}
int main() {
int base;
char num1[50], num2[50], result[60];
int len1, len2, i, j, k, carry = 0;
scanf("%d", &base);
scanf("%s", num1);
scanf("%s", num2);
len1 = strlen(num1);
len2 = strlen(num2);
i = len1 - 1;
j = len2 - 1;
k = 0;
// บวกเลขทีละหลักจากขวาไปซ้าย
while (i >= 0 || j >= 0 || carry > 0) {
int digit1 = (i >= 0) ? value(num1[i]) : 0;
int digit2 = (j >= 0) ? value(num2[j]) : 0;
int sum = digit1 + digit2 + carry;
carry = sum / base;
sum %= base;
result[k++] = toChar(sum);
i--;
j--;
}
for (int x = k - 1; x >= 0; x--)
printf("%c", result[x]);
printf("\n");
return 0;
}