Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
337635 黄浙峰老师 【C6-4】高精度减法2 C++ 解答错误 0 3 MS 252 KB 1120 2025-08-04 10:55:15

Tests(0/4):


#include <iostream> #include <algorithm> using namespace std; /* 高精度减法: 第一步:判断正负,如果S1比S2对应的整数小,结果为负,交换si S2 第二步:将两个字符串,逆序存入2个整数输出测试 第三步:从左至右,逐位相减,不够借位 第四步:从右向左,逆序输出 string s1,s2; */ int len1,len2,len; int a[205],b[205],c[205]; void sub(){ for(int i=0; i<len; i++){ if(a[i]<b[i]){ a[i+1]--; a[i]=a[i]+10; } c[i]=a[i]-b[i]; } while(c[len]==0 && len!=0) len--; return; } bool check(string s1, string s2){ if(len1>len2) return 0; if(len1<len2) return 1; for(int i=0; i<len; i++){ if(s1[i]<s2[i]) return 1; if(s1[i]>s2[i]) return 0; } return 0; } int main(){ string s1,s2; cin>>s1>>s2; len1=s1.size(); len2=s2.size(); len=max(len1,len2); if(check(s1,s2)){ cout<<'-'; swap(s1,s2); swap(len1,len2); } for(int i=0; i<len1; i++){ a[len1-i-1]=s1[i]-'0'; } for(int i=0; i<len2; i++){ b[len2-i-1]=s2[i]-'0'; } sub(); while(len>=0) cout<<c[len--]; return 0; }


测评信息: