高精度之减法模板

来源:互联网 发布:现在还能翻墙的软件 编辑:程序博客网 时间:2024/06/05 17:35
#include<cstdio>#include<string>#include<algorithm>#include<iostream>using namespace std;string s1,s2;bool flag;int a[520],b[520],c[520],l1,l2,len;inline void chuli() {    l1=s1.size(),l2=s2.size();    reverse(s1.begin(),s1.end());    for(int i=0;i<l1;i++)      a[i+1]=s1[i]-'0';    reverse(s2.begin(),s2.end());    for(int i=0;i<l2;i++)      b[i+1]=s2[i]-'0';}inline bool compare() {    if(l1>l2) return true;    if(l1<l2) return false;    for(int i=l1;i;i--) {        if(a[i]>b[i]) return true;        if(a[i]<b[i]) return false;    }    return true;}inline void sub1() {    len=max(l1,l2);    for(int i=1;i<=len;i++) {        c[i]+=b[i]-a[i];        if(c[i]<0) {            c[i+1]--;            c[i]+=10;        }    }    while((c[len]==0)&&(len>1)) len--;}inline void sub2() {    len=max(l1,l2);    for(int i=1;i<=len;i++) {        c[i]+=a[i]-b[i];        if(c[i]<0) {            c[i+1]--;            c[i]+=10;        }    }    while((c[len]==0)&&(len>1)) len--;}inline void print() {    for(int i=len;i>0;i--)      printf("%d",c[i]);    return;}int main() {    cin>>s1>>s2;    chuli();    if(!compare()) {        printf("-");        sub1();    }    else sub2();    print();    return 0;}
0 0
原创粉丝点击