大整數減法---用數組處理

題目鏈接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1169

【題目描述】

求兩個大的正整數相減的差。

【輸入】

共2行,第1行是被減數a,第2行是減數b(a > b)。每個大整數不超過200位,不會有多餘的前導零。

【輸出】

一行,即所求的差。

【輸入樣例】

9999999999999999999999999999999999999
9999999999999

【輸出樣例】

9999999999999999999999990000000000000

【來源】

易錯點:

在控制兩個數相減時,注意下標不要超時

代碼:

#include<iostream>
using namespace std;
int main()
{
	string s1,s2;
	int a[200]={0},b[200]={0},sum[200]={0},i,j,sub=0,l=0; 
	cin>>s1>>s2;
	for(i=0;i<s1.length();i++)
		a[i]=s1[i]-'0'; 
	for(i=0;i<s2.length();i++)
		b[i]=s2[i]-'0'; 
	for(i=s1.length()-1,j=s2.length()-1;i>=0;i--)
	{
		sum[l]=a[i]-b[j]-sub;
		if(sum[l]<0)
		{
			sum[l]+=10;
			sub=1;
		}
		else
			sub=0;
		l++;
		if(j>=0)
			j--;
	}
	int flag=0;
	for(i=l-1;i>=0;i--)
	{
		if(flag==0&&sum[i]==0)
			continue;
		else
		{
			cout<<sum[i];
			flag=1;
		}
	}
	cout<<endl;
	return 0;
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章