大数运算(减法)

发布于 2017-12-13  1.33k 次阅读


大数运算(减法)

代码

#include 
#include 
#include 
using namespace std;
int sum[100000];
int main()
{
	int cnt = 0, i;
	string a, b, c;
	cin >> a >> b;
	if(b > a && a.length() == b.length()) // 如果b大于a交换a和b的值 
	{
		cout << '-';
		swap(a,b);
	}
	if(b.length() > a.length())
	{
		cout << '-';
		swap(a,b);	
	}
	// cout << a << ' ' << b << endl;
	for(int i = b.length(); i < a.length(); i++) // c中0的个数为a的长度-b的长度 
		c += '0';
	b = c + b; // 把c拼接到b前面 
	// cout << a << ' ' << b << endl; 
	for(int i = a.length() - 1; i >= 0; i--)
	{
		sum[cnt] += int(a[i] - b[i]);
		while(sum[cnt] < 0) // 借位处理 
		{
			sum[cnt] += 10;
			sum[cnt + 1]--;
		}
		cnt++;
	}		
	for(i = cnt; i >= 0; i--) // 忽略前导0 
		if(sum[i] != 0)
			break;
	for(; i >= 0; i--)
		cout << sum[i];
	if(a == b) // 如果a=b的情况 
		cout << 0;
	cout << endl;	
}