ZOJ

来源:互联网 发布:淘宝如何申请客服介入 编辑:程序博客网 时间:2024/04/28 20:22

//ZOJ 1205 Martian Addition
//2010 3 15
//====类型描述:20进制大整数加法====
#include<stdio.h>
#include<string.h>
#define M 110

int main()
{
char str1[M],
         str2[M];
int     num1[M],
          num2[M],
          ans[M];
const char vers[20]={'0','1','2','3','4','5','6','7','8','9',
                                   'a','b','c','d','e','f','g','h','i','j'};
while(scanf("%s %s",str1, str2)!=EOF)
{  
   int len1, len2, len, i;
   for( i=0; i<M; i++)
    num1[i]=num2[i]=ans[i]=0;
   len1=strlen(str1)-1;
   len2=strlen(str2)-1;
   len=len1>len2?len1:len2;
   for( i=0; len1>=0; len1--)
   {
    if(str1[len1]>='0'&& str1[len1]<='9')
       num1[i]=str1[len1]-'0';
    else
       num1[i]=str1[len1]-'a'+10;
    i++;
     }
   for( i=0; len2>=0; len2--)
   {
    if(str2[len2]>='0'&&str2[len2]<='9')
       num2[i]=str2[len2]-'0';
    else
       num2[i]=str2[len2]-'a'+10;
    i++;
     }
    
     for( i=0; i<=len; i++) //核心代码
     {
    ans[i]=ans[i]+num1[i]+num2[i];
    ans[i+1]=ans[i+1]+ans[i]/20;
    ans[i]=ans[i]%20;
   }
  
   if(ans[len+1])
    printf("%c",vers[ans[len+1]]);
  
   for( ; len>=0; len--)
    printf("%c",vers[ans[len]]);
   printf("/n");
}

return 0;
}

原创粉丝点击