| 比赛 | 
    NOIP2015普及组练习 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    增强的加法问题 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    霓虹灯下的码农 | 
    运行时间 | 
    0.014 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.29 MiB  | 
    | 提交时间 | 
    2015-11-05 21:50:16 | 
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <string>
#include <cstring>
int a[110]; // a[0]表示位数,a[1]..a[a[0]]表示数字
int b[110];
int c[110];
char sa[110],sb[110];
void add(int a[], int b[], int c[]) {
  for (int i = 1; i <= a[0]; i++)
    c[i] = a[i] + b[i];
  for (int i = a[0] + 1; i <= b[0]; i++)
    c[i] = b[i];
  
  c[0]=b[0];
  for(int i=1;i<=b[0];i++)
  {
      if(c[i]>=10)
      {
          c[i+1]++;
          c[i]%=10;
      }
  }
  if(c[c[0]+1])  c[0]++;
}
int main()
{
    freopen("add.in","r",stdin);
    freopen("add.out","w",stdout);
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    
    scanf("%s %s",sa,sb);
    a[0]=strlen(sa);
    b[0]=strlen(sb);
    
    for(int i=a[0];i>=1;i--)
        a[i]=sa[a[0]-i]-'0';
    for(int i=b[0];i>=1;i--)
        b[i]=sb[b[0]-i]-'0';
    if(a[0]>b[0])
    add(b,a,c);
    else add(a,b,c);
    for(int i=c[0];i>=1;i--)
        printf("%d",c[i]);
    //system("pause");
    fclose(stdin);  fclose(stdout);
    return 0;
}