大数加减乘除幂模版

来源:互联网 发布:a开票软件 金税盘版 编辑:程序博客网 时间:2024/05/14 23:58

大数加

void add(char a[],char b[])
{
    inti,j,k=0,up=0,x,y,z,t;
   i=strlen(a)-1,j=strlen(b)-1;
   while(i>=0||j>=0)
    {
       if(i<0) x=0;else x=a[i]-'0';
       if(j<0) y=0;else y=b[j]-'0';
       z=x+y+up;
       if(z>9)
       {
           up=1;
           z-=10;
       }
       else
           up=0;
       c[k++]=z+'0';
       i--,j--;
    }
    if(up)
       c[k++]='1';
   c[k]='\0';
   for(i=0;i<k/2;i++)
    {
       t=c[i];
       c[i]=c[k-i-1];
       c[k-i-1]=t;
    }
}

大数*大数

void mult(char a1[],char b1[])
{
    int i,j,k,lena,lenb;
    char a[1024]={0},b[1024]={0},d[1024]={0};
    lena=strlen(a1);
    lenb=strlen(b1);
    for(i=0;i<lena;i++)
        a[i]=a1[lena-i-1]-'0';
    for(i=0;i<lenb;i++)
        b[i]=b1[lenb-i-1]-'0';
    for(i=0;i<lena;i++)
        for(j=0;j<lenb;j++)
        {
            d[i+j]+=a[i]*b[j];
            d[i+j+1]+=d[i+j]/10;
            d[i+j]%=10;
        }
    k=lena+lenb;
    while(!d[k-1])
        k--;
    for(i=0;i<k;i++)
        c[i]=d[k-i-1]+'0';
}