比赛 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;
}