Kattis - different (大数减法,WA了。。)

WA了。。。后面调。
这里写图片描述

#include<cstdio>
#include<iostream>
#include<cstring>
#define maxn 1000 
using namespace std;
typedef long long ll;
string s1,s2,s3;
ll A1[maxn],A2[maxn],B[maxn],len1,len2,len3;
void swap1(){
    s3=s1;
    s1=s2;
    s2=s3;
    len3=len1;
    len1=len2;
    len2=len3;
}
int main(){
    while(cin>>s1>>s2){
        memset(A1,0,sizeof(A1));
        memset(A2,0,sizeof(A2));
        memset(B,0,sizeof(B));
        len1=s1.length();
        len2=s2.length();
        //s1表示更大的那个数,s2表示更小的数 
        if(len1<len2){
            swap1();
        }
        else if(len1==len2){
            for(int i=0;i<len1;i++){
                if(s1[i]<s2[i]){
                    swap1();
                    break;
                }
            }
        }

        //cout<<s1<<" "<<len1<<endl;
        //cout<<s2<<" "<<len2<<endl;

        //把字符转换为数字
        for(int i=len1-1,j=0;i>=0;i--,j++){
            A1[j]=s1[i]-'0';
        }
        for(int i=len2-1,j=0;i>=0;i--,j++){
            A2[j]=s2[i]-'0';
        }

        //做减法运算
        ll q=0;
        for(int i=0;i<200;i++){
            A1[i]=A1[i]-A2[i];
            if(A1[i]<0){
                A1[i]+=10;
                A1[i+1]--;
            }
        } 
        //printf
        bool flag=0;    //去除前导0 
        for(int i=199;i>=0;i--){
            if(A1[i]) flag=1;
            if(flag) cout<<A1[i];
        }
        if(flag==0) cout<<"0";
        cout<<endl; 
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_37360631/article/details/81673857