#include<bits/stdc++.h> using namespace std; //1.定义俩个string s1,s2; string s1,s2; char f='+'; //3.定义3个整形数组a[300] b[300] c[300] int a[500],b[500],c[500]; int main(){ int p=0; //2.输入 s1,s2 cin>>s1>>s2; if(s1.size()<s2.size()||(s1.size()==s2.size()&&s1<s2)){ f='-'; swap(s1,s2); } //4.分别将 s1,s2逆序存入数组a 数组b // 4.1 循环i从s1.size()-1到0 // 4.2 a[s1.size()-1-i]=s1[i]-'0' for(int i=0;i<s1.size();i++){ a[s1.size()-1-i]=s1[i]-'0'; } // 4.3 循环i从s1.size()-1到0 // 4.4 b[s2.size()-1-i]=s2[i]-'0' for(int i=0;i<s2.size();i++){ b[s2.size()-1-i]=s2[i]-'0'; } // 5.相减 // 5.1考虑谁大谁小,用大减小 // 5.2考虑结果是负数 for(int i=0;i<s2.size();i++){ b[s2.size()-i-1]=s2[i]-'0'; } //5.3求出int len=s1.size() int len=s1.size(); for(int i=0;i<len;i++){ //5.4循环len if(a[i]<b[i]) { //5.4.1 判断要不要借位 a[i]=a[i]+10; a[i+1]=a[i+1]-1; } c[i]=a[i]-b[i]; } // 6.输出 // 6.1 先判断输出结果是否为负 if(f=='-') cout<<'-'; //6.2倒序输出 for(int i=len-1;i>=0;i--){ if(c[i]!=0){ p=i; break; } } for(int i=p;i>=0;i--){ cout<<c[i]; } return 0; } /************************************************************** Problem: 1269 User: laichenxu Language: C++ Result: Accepted Time:14 ms Memory:2084 kb ****************************************************************/