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]);
    }
    }
}