|
发表于 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;
- }
复制代码
|
|