加法
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[10000],b[10000],c=0;
int i,x,la,lb,lmax;
cin>>a>>b;
la=strlen(a);
lb=strlen(b);
if(la>lb)
lmax=la;
else
lmax=lb;
int temp, inta[lmax],intb[lmax],s[lmax+1];
for(i=0;i<lmax;i++)
inta[i]=0;
for(i=0;i<lmax;i++)
intb[i]=0;
for(i=0;i<lmax+1;i++)
s[i]=0;
for(i=0;i<la;i++)
inta[i]=a[la-i-1]-48;
for(i=0;i<lb;i++)
intb[i]=b[lb-i-1]-48;
for(i=0;i<lmax;i++)
{
temp=inta[i]+intb[i];
if(temp>=10)
{
s[i]=s[i]+temp-10;
s[i+1]=s[i+1]+1;
}
else
s[i]=s[i]+temp;
}
if(s[lmax]==0)
lmax--;
for(i=lmax;i>=0;i--)
{
cout<<s[i];
}
system("pause");
return 0;
}
乘法
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[10000];
char b[10001];
int i,j,x,la,lb,lmax;
cin>>a;
cin>>b;
la=strlen(a);
lb=strlen(b);
lmax=la+lb;
int temp, w,inta[la],intb[lb],s[lmax];
for(i=0;i<la;i++)
inta[i]=0;
for(i=0;i<lb;i++)
intb[i]=0;
for(i=0;i<lmax;i++)
s[i]=0;
for(i=0;i<la;i++)
inta[i]=a[la-i-1]-48;
for(i=0;i<lb;i++)
intb[i]=b[lb-i-1]-48;
for(i=0;i<la;i++)
{
for(j=0;j<lb;j++)
{
x=inta[i]*intb[j];
w=i+j;
s[w]=s[w]+x %10;
s[w+1]=s[w+1]+s[w]/10+x/10;
s[w]=s[w]%10;
}
}
while(s[lmax-1]==0)
{
lmax--;
}
for(i=lmax-1;i>=0;i--)
{
cout<<s[i];
}
system("pause");
return 0;
}