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