Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
76152 bnu_fanmeijie 大整数减法 C++ 通过 0 MS 272 KB 1291 2025-12-16 16:13:32

Tests(4/4):


#include<iostream> #include<cstring> #include<cstdio> #include<cstdlib> using namespace std; char s1[10090],s2[10090],s3[10090]; int a[10090],b[10090],c[10090]; int flag=0; //记录正负:0→正 ; 1→负 //比较函数,如果s1>=s2,返回true;否则返回false bool compare(char s1[],char s2[]) { int u=strlen(s1),v=strlen(s2); if(u!=v) return u>v;//如果u>v,那么返回true;u<v:返回false //同等长度比较 for(int i=0;i<u;i++) { if(s1[i]!=s2[i]) return s1[i]>s2[i]; } } int main() { int la,lb,lc; scanf("%s",s1); scanf("%s",s2); if(!compare(s1,s2)) //如果s1<s2:交换两个数 { flag=1; strcpy(s3,s1); strcpy(s1,s2); strcpy(s2,s3); } la=strlen(s1); lb=strlen(s2); //转换数字 for(int i=0;i<la;i++) a[la-i]=s1[i]-'0'; for(int i=0;i<lb;i++) b[lb-i]=s2[i]-'0'; lc=max(la,lb); //定义lc,结果的长度位数 for(int i=1;i<=lc;i++) { if(a[i]<b[i]) { a[i+1]--; a[i] += 10; } c[i]=a[i] - b[i]; } while(c[lc]==0 && lc>1) lc--; //特殊处理 :结果全为0时,强制输出0,不输出负号 if(lc==1 && c[1]==0) { printf("0\n"); } else { if(flag==1) printf("-"); for(int i=lc;i>0;i--) printf("%d",c[i]); } return 0; }


测评信息: