高精度减法

敲代码要敲疯了!!

不怕难,就怕烦。。。

好了,很晚了,明天就开学了

22:30

//高精度减法——Crazily
#include<bits/stdc++.h>
using namespace std;
char a[100001],b[100001];
int  e[100000],d[100001];
int c[100001]={0};
int i,j,x,y,z,p,q,o;
bool f(){
    for(register int i=0;i<x;i++){
        if(a[i]!='0')
        return false;
    }
    for(register int i=0;i<y;i++){
        if(b[i]!='0')
        return false;
    }
    return true;
}
int main(){   
    q=0;
    cin>>a>>b;    
    x=strlen(a);  
    y=strlen(b);   
    if(f()){
        cout<<0;
        return 0;
    }
    if(x>y){
        p=x;
        q=1;
    }
    else
    p=y;
    for(i=x-1,j=0;i>=0,j<=x-1;i--,j++)  
    e[j]=a[i]-'0';    
    for(i=y-1,j=0;i>=0,j<=y-1;i--,j++)
    d[j]=b[i]-'0';   
    if(x==y){    
    q=1;
        for(i=p-1;i>=0;i--)
           if(e[i]<d[i]){
                q=0;
                break;  
             }    
     }
    for(i=0;i<p;i++){
        if(q==1) 
        c[i]=e[i]-d[i];
        else
        c[i]=d[i]-e[i];   
    }  
    if(q==0)  
      cout<<"-";
    for(i=0;i<p;i++){
        if(c[i]<0){
            c[i]+=10; 
            c[i+1]-=1;
        }       
    }
       o=p;      
    for(i=p;i>=0;i--){
        if(c[i]!=0)
             break; 
             o=o-1;
            if(i==0&&c[i]==0){
                 o=0;
                 break;
            }
    }
       for(i=o;i>=0;i--)  
       cout<<c[i];
}

这段代码就不做详细解析了

我也去睡了

好梦O(∩_∩)O

posted @ 2018-08-30 22:31  Crazily  阅读(170)  评论(0编辑  收藏  举报