Submission
Status:
PPPPPPP-P
Subtask/Task Score:
96/100
Score: 96
User: Jokul
Problemset: บวกเลขฐาน
Language: c
Time: 0.002 second
Submitted On: 2025-10-11 13:47:31
#include<stdio.h>
#include<string.h>
int pow(int x,long long int y)
{
long long int mul=1;
for(int i=1;i<y;i++)
{
mul=mul*x;
}
return mul;
}
int main()
{
int base;
scanf("%d",&base);
char num1[100],num2[100];
scanf("%s",num1);
scanf("%s",num2);
int a,b;
a=strlen(num1);
b=strlen(num2);
if(a>19||b>19)
{int n1[a+1],n2[a+1],sum[a+1];
for(int i=0;i<=a;i++)
{
sum[i]=0;
}
for(int i=1;i<=a;i++)
{
if(num1[i-1]<='9')
{
n1[i]=(int)(num1[i-1]-'0');
}
else
{
n1[i]=(int)(num1[i-1]-'A'+10);
}
if(num2[i-1]<='9')
{
n2[i]=(int)(num2[i-1]-'0');
}
else
{
n2[i]=(int)(num2[i-1]-'A'+10);
}
}
for(int i=a;i>=1;i--)
{
sum[i]=n1[i]+n2[i];
if(sum[i]>=base)
{
sum[i]=sum[i]%base;
sum[i-1]++;
}
}
printf("\n");
for(int i=0;i<=a;i++)
{
printf("%d ",sum[i]);
}
for(int i=0;i<=a;i++)
{
if(sum[i]==0&&i==0)
{
continue;
}
else if(sum[i]==1&&i==0)
{
printf("1");
}
if(i>0)
{
if(sum[i]<10)
{
printf("%d",sum[i]);
}
else
{
printf("%c",'A'+(sum[i]%10));
}
}
}
}
/////////////////////////////////////
else{
long long int n1[a+1],n2[b+1],l;
for(int i=0;i<a;i++)
{
if(num1[i]<='9')
{
n1[i]=(int)(num1[i]-'0');
}
else if(num1[i]>='A')
{
n1[i]=(int)(num1[i]-'A'+10);
}
}
for(int i=0;i<b;i++)
{
if(num2[i]<='9')
{
n2[i]=(int)(num2[i]-'0');
}
else if(num2[i]>='A')
{
n2[i]=(int)(num2[i]-'A'+10);
}
}
long long int mul=pow(base,a);
long long int sum=0;
for(int i=0;i<a;i++)
{
sum=sum+(n1[i]*mul);
mul=mul/base;
}
mul=pow(base,b);
for(int i=0;i<b;i++)
{
sum=sum+(n2[i]*mul);
mul=mul/base;
}
//printf("%d",sum);
int l1;
if(a>b)
{
l1=a;
}
else{
l1=b;
}
char result[l1],co=0;
while(sum>0)
{
// printf("%d",sum%base);
if(sum%base>9)
{
result[co]=(char)(sum%base-10+'A');
}
else if(sum%base<10&&sum%base>=0)
{
result[co]=sum%base+'0';
}
co++;
sum/=base;
}
//printf("\n");
for(int i=co-1;i>=0;i--)
{
printf("%c",result[i]);
}
}
}