/*
总时间限制: 1000ms 内存限制: 65536kB
描述
求2个大的正整数相减的差
输入
第1行是测试数据的组数n,每组测试数据占2行,第1行是被减数a,第2行是减数b(a > b)。每组测试数据之间有一个空行,每行数据不超过100个字符
输出
n行,每组测试数据有一行输出是相应的整数差
样例输入
2
9999999999999999999999999999999999999
9999999999999
5409656775097850895687056798068970934546546575676768678435435345
1
样例输出
9999999999999999999999990000000000000
5409656775097850895687056798068970934546546575676768678435435344
*/
#include<iostream>
#include<cstring>
using namespace std;
char a[101],b[101];
int first[101],second[101];
int main()
{
int n;
int len1,len2;
cin >> n;
for(int i = 0; i < n; ++i)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(first,0,sizeof(first));
memset(second,0,sizeof(second));
cin >> a >> b;
len1 = strlen(a);
len2 = strlen(b);
int j;
for(j = 0; j < len1; ++j)
first[j] = a[len1 - 1 - j] - '0';
for(j = 0; j < len2; ++j)
second[j] = b[len2 -1 - j] - '0';
for(j = 0; j < len1 || j < len2; ++j)
{
if(first[j] < second[j])
{
first[j] = first[j] + 10 - second[j];
first[j+1] -= 1;
}
else
first[j] -= second[j];
}
for(j = len1 - 1; j >= 0; --j)
if(first[j] != 0)
break;
for(;j >= 0; --j)
cout << first[j];
cout << endl;
}
system("pause");
return 0;
}
主要思想就是用字符串数读入两个大整数,然后有两个整形数组反向储存,因为此处限制了a>b,所以较为简单
大整数减法
最新推荐文章于 2022-11-06 20:23:50 发布