高精度算法:大数加减法&大数乘法&比较

博客目录

一、题目描述

给出两个不超过500位的正整数,输出相应的运算结果。

二、代码

注意:乘法时用char类型的数值可能超出上限。

使用重载运算符定义:

#include    //大数乘法,加法,比较大小
#include
using namespace std;
typedef struct 
{
    int len;         //字符串长度    
    char co[600];
}Big;                //大数类型
Big operator+ (Big a,Big b)    //a,b>=0 (要考虑结果为0,不能反回空字符串,即最后加\0时不能加在第0位) 
{
    int i;
    int cu=0;
    Big c;
    c.co[0]='1'; 
    char *x,*y;
    int alen;
    x=a.co;
    y=b.co;
    alen=a.len;
    int blen=b.len;
    if(a.len=1;i--)
    {
        c.co[i]=x[i-1];
    }
    for(i=0;i'9')
        {
            c.co[alen-i]-=10;
            cu=1;
        }
    }                // 012  012
    for(i=alen-blen;i>=0 && cu;i--)    // 098 +002
    {
        c.co[i]+=cu;
        cu=0;
        if(c.co[i]>'9')
        {
            c.co[i]-=10;
            cu=1;
        }
    }
    if(i==-1)
    {
        c.len++;
    }
    else
    {
        for(i=0;i9)
            {
                cu=t/10;
                t%=10;
                out[len-1-i-j-1]+=cu;
            }
            out[len-1-i-j]=t+'0';
        }
    }
    
    for(i=0;i

 
 

你可能感兴趣的:(其他算法)