大数加法
#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
int main()
{
char s1[100],s2[100];
int i,l,len1,len2;
int a[100],b[100],c[100];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
scanf("%s",s1);
scanf("%s",s2);
len1 = strlen(s1);
len2 = strlen(s2);
for(i=0;i<len1;i++)
{
a[i] = s1[len1-i-1]-'0';
}
for(i=0;i<len2;i++)
{
b[i] = s2[len2-i-1]-'0';
}
l = len1>len2?len1:len2;
for(i=0;i<l;i++)
{
c[i]+=a[i]+b[i];
if(c[i]>=10)
{
c[i+1]++;
c[i]=c[i]%10;
}
}
if(c[l]!=0)
{
printf("%d",c[l]);
}
for(i=l-1;i>=0;i--)
{
printf("%d",c[i]);
}
return 0;
}
大数减法
#include<iostream>
#include<stdio.h>
#include<cstring>
int main()
{
char s1[10000],s2[10000];
int a[10000],b[10000],c[10000];
int i,k,l,len1,len2;
int flag=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
scanf("%s",s1);
scanf("%s",s2);
len1 = strlen(s1);
len2 = strlen(s2);
for(i=0;i<len1;i++)
{
a[i] = s1[len1-i-1]-'0';
}
for(i=0;i<len2;i++)
{
b[i] = s2[len2-i-1]-'0';
}
l = len1>len2?len1:len2;
if(len1>=len2)
{
k=1;
}
if(len1<len2)
{
k=-1;
}
for(i=0;i<l;i++)
{
if(k>0)
{
if(a[i]-b[i]>=0)
{
c[i] = a[i]-b[i];
}
else{
c[i] = a[i]+10-b[i];
a[i+1]--;
}
}
if(k<0)
{
if(b[i]-a[i]>=0)
{
c[i] = b[i]-a[i];
}
else{
c[i] = b[i]+10-a[i];
b[i+1]--;
}
}
}
if(k<0)
{
printf("-");
}
for(i=l-1; i>=0; i--)
{
if(c[i])
{
flag=1;
}
if(flag||i==0)
{
printf("%d", c[i]);
}
}
return 0;
}