题目描述输入两个正整数数:a,b。
输出他们的差。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
cin>>a>>b;
int s[5000];
int len_a=a.length(), len_b=b.length(), len, k=0, m,n, tmp;
// 判断 a 和 b 的大小,并使得 a 大于 b
if (a.length()<b.length() || a.length()==b.length() && a<b) {
// a 和 b 值交换
swap(a,b);
// a 和 b 长度交换
tmp = len_a;
len_a = len_b;
len_b = tmp;
// 负数在输出的时候,需要补负号
cout<<"-";
}
// 循环要用大的长度循环,不然会导致 字符串 读取不完
len = len_a>len_b ? len_a : len_b;
int t = 0;
for (int i=len-1; i>=0; i--) {
// 存储 a数组中的值
m = a[len_a-k-1] - '0';
// 存储 b 数组中的值,超过b数组的长度,读取时,用 0 补齐
n=0;
if (len_b-1-k>=0) {
n = b[len_b-1-k] - '0';
}
// 减数小于被减数,需要找前一位借10,因此 前一位 需要 减掉 1
if (m < n) {
a[len_a-1-k-1] -= 1; // 表示 前一位 位 借 10 给后一位
m += 10;
}
s[k] = m - n;
k++;
}
// 去掉多余的 0
int max = len + 1;
while (s[max] == 0 && max>0) {
max--;
}
for (int i = max; i >= 0; i--) {
cout<<s[i];
}
}