| 
 | 
 
 
发表于 2023-7-24 20:57:56
|
显示全部楼层
 
 
 
那个代码测试了,只是有点小问题 ,找了个可以用的: 
- #include<bits/stdc++.h>
 
 - #define mian main
 
 - #define MAXN 10500
 
  
- using namespace std;
 
  
- string a, b;
 
 - //选择字符串。因为字符串储存了每个串的长度,可以直接调用。
 
 - int na[MAXN], nb[MAXN], ans[MAXN]; 
 
 - bool pd;
 
  
- int main()
 
 - {
 
 -     cin >> a >> b;
 
 -         if((a < b && a.size() == b.size()) || a.size() < b.size())
 
 -         {
 
 -                 swap(a, b);
 
 -                 pd = true;
 
 -         }
 
 -     for(int i = a.size(); i > 0; i --)na[i] = a[a.size() - i] - '0';
 
 -     for(int i = b.size(); i > 0; i --)nb[i] = b[b.size() - i] - '0';
 
 -     //将字符串中的信息转化到数组中,数组模拟数字。 
 
 -     int maxl = max(a.size(), b.size());
 
 -     //找到两个数中的最大位,为for循环服务 
 
 -         for(int i = 1; i <= maxl; i ++)
 
 -         {
 
 -                 if(na[i] < nb[i])
 
 -                 {
 
 -                         na[i + 1] --;
 
 -                         na[i] += 10;
 
 -                 }
 
 -                 ans[i] = na[i] - nb[i];
 
 -         }
 
 -         
 
 -         while(ans[maxl] == 0)maxl --;//防止减后降位,多输出若干0 
 
 -         
 
 -         if(pd == true)cout << "-";//b>a时,a - b < 0 所以打上负号 
 
 -         
 
 -         for(int i = maxl; i > 0; i --)cout << ans[i];
 
 -         if(maxl < 1)cout << "0";
 
 -     return 0;
 
 - }
 
  复制代码 
 |   
 
 
 
 |