高精度加减乘法

加法
#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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值