#include<stdio.h>
#include<string.h>
#define N 8
#define M 15
void add(int a[],int b[]);
void stringch(char a[],int a1[]);
void printnum(int num[]);
int main()
{
char a[M],b[M];
int a1[M]={0},b1[M]={0};
gets(a);
gets(b);
stringch(b,b1);
stringch(a,a1);
add(a1,b1);
printnum(a1);
}
void stringch(char a[],int a1[])
{
int i,no,j,wei;
int len;
len=strlen(a);
a1[0]=len/N;
if((len%N)) a1[0]++;
for(i=1,no=len-1;i<=a1[0]&&no>=0;i++)
{
wei=1;
for(j=1;j<=N;j++)
{
a1[i]=(a[no]-'0')*wei+a1[i];
no--;
wei=wei*10;
if(no<0) break;
}
}
return;
}
void add(int a[],int b[])
{
int flag=0,wei;
int i,j;
int len=a[0]>b[0]?a[0]+1:b[0]+1;
for(i=1,wei=1;i<=N;i++)
wei=wei*10;
for(i=1;i<=len;i++)
{
a[i]=a[i]+b[i]+flag;
if(a[i]/wei)
flag=1;
else
flag=0;
a[i]=a[i]%wei;
}
}
void printnum(int num[])
{
int len=num[0];
int i,j;
int tmp,wei;
while(num[len]==0) len--;
printf("%d",num[len]);
for(i=len-1;i>0;i--)
{
wei=1;
for(j=1;j<N;j++)
wei=wei*10;
for(j=1;j<N;j++)
{
if(num[i]/wei==0) putchar('0');
wei=wei/10;
}
printf("%d",num[i]);
}
putchar('\n');
}
高精度加法
于 2022-11-20 20:07:55 首次发布