3370 - 高精度减法

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

输入两个正整数,输出第一个数减去第二个数的差,可能是整数,负数或0。

题目输入


</p>
<div style="border:solid white 1.0pt;padding:0cm 0cm 0cm 0cm;background:white;margin-left:7.5pt;">
	<p class="MsoNormal" align="left">
		输入文件只有两行,第一行一个整数x,第二行一个整数y。其中0&lt;=x&lt;=10<sup>200</sup>,0&lt;=y&lt;=10<sup>200</sup> 
	</p>
</div>

<p>
	<br />
</p>

题目输出

输出文件有1行,第一个数减去第二个数的差。

输入/输出样例

输入格式

123456789123456789 
123456789

输出格式

123456789000000000

C++解答

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
	string s1,s2,s3;
	int a[241],b[241],c[241],t,i;
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	cin>>s1;cin>>s2;
	int lena=s1.size(),lenb=s2.size();
	if(lena<lenb||((lena==lenb)&&(s1<s2)))
	  {
	  	s3=s1;s1=s2;s2=s3;
	  	t=lena;lena=lenb;lenb=t;
	  	cout<<'-';
	  }
	for(i=0;i<=lena-1;i++)
	  a[lena-i]=s1[i]-48;
	for(i=0;i<=lenb-1;i++)
	  b[lenb-i]=s2[i]-48;
	int x=0;
	for(i=1;i<=lena;i++)
	{
	  if(a[i]<b[i])
	  {
	    a[i]=a[i]+10;
		a[i+1]--;
       }
      c[i]=a[i]-b[i];
    }
    while(c[i]==0&&i>1) i--;
    for(int j=i;j>=1;j--)
     cout<<c[j];
}