测试点六 WA 想不明白 求大佬看看
查看原帖
测试点六 WA 想不明白 求大佬看看
634693
Mirapr楼主2021/12/1 13:07
#include <stdio.h>
#include <string.h>
#include <math.h>
void sub(char p1[],char p2[]);
int main(){
    char p1[100000],p2[100000];
    scanf("%s %s",p1,p2);
    sub(p1,p2);
    return 0;
}
void sub(char p1[],char p2[]){
    int l1=strlen(p1);
    int l2=strlen(p2);
    int len;
    if(l1>l2)
    len=l1;
    else
    len=l2;
    int i;
    int p3[100000],p4[100000],t[100000];
    memset(p3,0,sizeof(p3));
    memset(p4,0,sizeof(p4));        
    for(i=l1-1;i>=0;i--){
        p3[l1-1-i]=p1[i]-'0';
}
    for(i=l2-1;i>=0;i--){
        p4[l2-1-i]=p2[i]-'0';
    }
    int flag=0;
    if(l1>l2);
    else if(l1<l2){
        flag=1;
        memcpy(t,p3,sizeof(p3));
        memcpy(p3,p4,sizeof(p4));
        memcpy(p4,t,sizeof(t));
    }
    else{
        for(i=0;i<l1;i++){
        if(p3[l1-1-i]>p4[l2-1-i]);
        else if(p3[l1-1-i]<p4[l2-1-i]){
        flag=1;
        memcpy(t,p3,sizeof(p3));
        memcpy(p3,p4,sizeof(p4));
        memcpy(p4,t,sizeof(t));
        }
    }
    }
    for(i=0;i<len;i++){
        p3[i]=p3[i]-p4[i];
        if(p3[i]<0)
    {
        p3[i+1]-=1;
        p3[i]+=10;}
    }
    if(p3[len-1]==0)
    len--;
    if(flag==1){
        printf("-");
    }
    for(i=len-1;i>=0;i--){
        printf("%d",p3[i]);
        }
}
2021/12/1 13:07
加载中...