华师一附中OI组
标题:
高精度减法
[打印本页]
作者:
admin
时间:
2018-4-13 20:41
标题:
高精度减法
#include<iostream>
using namespace std;
string s1,s2,s3;
int i,j,x1,x2,x3;
int l1,l2;
int main()
{
cin>>s1>>s2;
///用字符串的唯一目的就是读入方便
bool b1=s1.size()<s2.size();
bool b2=(s1.size()==s2.size() && s1<s2);
if (b1||b2) ///大小判断,输出负号
{
swap(s1,s2);
cout<<'-';
}
for (i=1; i<=l1-l2; i++) s2='0'+s2;
///短的前面添0以便对齐
///cout<<s1<<endl<<s2; 输出检查
j=0; ///进位
for (i=l1-1; i>=0; i--)
///从右往左加
{
x1=s1[i]-'0';///字符变数字
x2=s2[i]-'0';
x3=x1-x2-j;
if(x3<0)(j=1,x3+=10);///进位处理
else (j=0);
s3=char(x3+'0')+s3;
///数字变字符并加在结果左边
}
while (s3[0]=='0' && s3.size()>1) s3.erase(0,1);
///去掉前面的0,最后一个0不去
cout<<s3;
return 0;
}
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2