#include<stdio.h>
#include<string.h>
#include<iostream>
#include<malloc.h>
using namespace std;
struct bign{
int d[1000];
int len;
bign(){
memset(d, 0, sizeof(d));
len=0;
}
};
bign change(char str[])//将整数转换为bign
{
bign a;
a.len = strlen(str);
for(int i=0; i<a.len; i++)
{
a.d[i] = str[a.len-i-1]-'0';
}
return a;
}
int compare(bign a, bign b)//比较a和b的大小
{
if(a.len>b.len) return 1;//a大
else if(a.len<b.len) return -1;//a 小
else
{
for(int i=a.len-1; i>=0; i--)
{
if(a.d[i]>b.d[i]) return 1;
else if(a.d[i]<b.d[i]) return -1;
}
return 0;//两数相等
}
}
bign add(bign a, bign b)//高精度a+b
{
bign c;
int carry = 0;//carry是进位
for(int i=0; i<a.len||i<b.len; i++)//以较长的为界限
{
int temp = a.d
【算法笔记5.6小节 -大整数运算 】
最新推荐文章于 2022-11-06 12:47:49 发布