Submission
Status:
P-----PP-
Subtask/Task Score:
36/100
Score: 36
User: Jokul
Problemset: บวกเลขฐาน
Language: c
Time: 0.002 second
Submitted On: 2025-09-30 11:50:42
#include<stdio.h>
#include<string.h>
int main()
{
int base;
scanf("%d",&base);
char num1[100],num2[100];
scanf("%s",num1);
scanf("%s",num2);
int a;
a=strlen(num1);
int num[a+1];
char b[a+1];
for(int i=0;i<=a;i++)
{
num[i]=0;
b[i]='0';
}
/////////////////////////////////////////////////
if(base<=10)
{
for(int i=0;i<a;i++)
{
num[i]=(int)(num1[i]-'0')+(int)(num2[i]-'0');
if(num[i]>=base&&i==0)
{
num[a]=1;
num[i]=num[i]-base;
}
}
for(int i=a-1;i>=0;i--)
{
if(num[i]>=base&&i>0)
{
num[i-1]=num[i-1]+1;
num[i]=num[i]-base;
}
}
if(num[a]==1)
{
printf("%d",num[a]);
}
for(int i=0;i<a;i++)
{
printf("%d",num[i]);
}
}
///////////////////////////////////////////
else{
for(int i=0;i<a;i++)
{
if(num1[i]<='9'&&num2[i]<='9')
b[i]=(char)((int)(num1[i]-'0')+(int)(num2[i]-'0')+'0');
else if(num1[i]>='A'&&num2[i]<='9')
b[i]=(char)((int)(num1[i]-55)+(int)(num2[i]-'0')+'0');
else if(num1[i]<='9'&&num2[i]>='A')
b[i]=(char)((int)(num1[i]-'0')+(int)(num2[i]-55)+'0');
else if(num1[i]>='A'&&num2[i]>='A')
b[i]=(char)((int)(num1[i]-55)+(int)(num2[i]-55)+'0');
if(b[i]-'0'>=base&&i==0)
{
b[a]='1';
if(b[i]-base<='9')
b[i]=(char)(b[i]-base+'0');
else
{
b[i]=(char)((b[i]-'0')-base+55);
}
}
else if(b[i]-'0'>9&&b[i]-'0'<base&&i==0)
{
b[i]=(char)((b[i]-'0')+55);
}
}
for(int i=a-1;i>0;i--)
{
if(b[i]-'0'>=base)
{
b[i-1]=b[i-1]+1;
if(b[i]-base<='9')
b[i]=(char)(b[i]-base+'0');
else
{
b[i]=(char)((b[i]-'0')-base+55);
}
}
else if(b[i]-'0'>9&&b[i]-'0'<base)
{
b[i]=(char)((b[i]-'0')+55);
}
}
if(b[a]=='1')
{
printf("%c",b[a]);
}
for(int i=0;i<a;i++)
{
printf("%c",b[i]);
}
}
}