其他题型|模板-高精度A+B,A-B

题意:
求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】

    推荐阅读