// main.cpp
// 小学生算数
//
// Created by 张嘉韬 on 16/1/28.
// Copyright © 2016年 张嘉韬. All rights reserved.
//
#include <iostream>
#include <cstring>
using namespace std;
int init(int a,int *a1)
{
int lena;
lena=1;
while(a>0)
{
a1[lena]=a%10;
a=a/10;
lena++;
}
lena--;
return lena;
}
int main(int argc, const char * argv[]) {
int a,b,a1[20],b1[20],c1[20],lena,lenb,lenc,counter,temp;
while(scanf("%d%d",&a,&b)==2&&(a||b))
{
memset(c1,0,sizeof(c1));
memset(a1,0,sizeof(a1));
memset(b1,0,sizeof(b1));
counter=0;
lena=init(a,a1);
lenb=init(b,b1);
lenc=1;
while(lenc<=lena||lenc<=lenb)
{
temp=a1[lenc]+b1[lenc]+c1[lenc];
if(temp>=10)
{
counter++;
temp=temp%10;
c1[lenc+1]++;
}
c1[lenc]=temp;
lenc++;
}
cout<<counter<<endl;
}
return 0;
}
总结
进行高精度运算的时候一定要注意每次用到数组之前一定要把这个数组进行初始化,不然如果遇到多组数据时候就会产生错误。