题意:
求A+B,A-B;
-10^5<=A,B<=10^5;
题解:
没啥可说的。。。自用模板而已;
感觉实现注意传参要传地址否则结构体太大会RE的;
同号可以直接处理,异号加变减减变加,就转化成同号咯;
上代码;
代码:
#include
#include
#include
#define N 100010
#define mod 10
using namespace std;
char str[N];
struct BIG
{
bool sign;
int len;
int num[N];
void read()
{
scanf("%s",str);
len=strlen(str);
int i;
if(str[0]=='-') sign=0,i=1;
elsesign=1,i=0;
for(;
i0;
i--)
printf("%d",num[i]);
printf("\n");
}
}a,b,In;
bool operator<(BIG &a,BIG &b)
{
if(a.sign^b.sign)
return !a.sign;
if(a.len!=b.len)
return (a.len>b.len)^a.sign;
for(int i=a.len;
i>0;
i--)
if(a.num[i]=mod?temp-mod:temp;
up=(temp>=mod);
}
ret.sign=a.sign;
if(up)ret.num[len+1]=1,ret.len=len+1;
elseret.len=len;
while(ret.num[ret.len]==0&&ret.len>1)
ret.len--;
return ret;
}
BIG operator-(BIG &a,BIG &b)
{
if(a.sign^b.sign)
{
b.sign^=1;
return a+b;
}
if(!(a1)
ret.len--;
return ret;
}
int main()
{
a.read();
b.read();
(a+b).print();
(a-b).print();
return 0;
}
【其他题型|模板-高精度A+B,A-B】