高精度加减乘法

来源:互联网 发布:淘宝店铺怎么改店名 编辑:程序博客网 时间:2024/05/01 00:48
加法
#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;}