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