华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1306|回复: 0
打印 上一主题 下一主题

高精度减法

[复制链接]

738

主题

1485

帖子

5422

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5422
跳转到指定楼层
楼主
发表于 2018-4-13 20:41:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<iostream>
  2. using  namespace std;
  3. string s1,s2,s3;
  4. int i,j,x1,x2,x3;
  5. int l1,l2;
  6. int main()
  7. {
  8.     cin>>s1>>s2;
  9.     ///用字符串的唯一目的就是读入方便
  10.     bool b1=s1.size()<s2.size();
  11.     bool b2=(s1.size()==s2.size() &&  s1<s2);
  12.     if (b1||b2)  ///大小判断,输出负号
  13.     {
  14.         swap(s1,s2);
  15.         cout<<'-';
  16.     }
  17.    
  18.     for (i=1; i<=l1-l2; i++) s2='0'+s2;
  19.     ///短的前面添0以便对齐

  20.     ///cout<<s1<<endl<<s2;  输出检查
  21.     j=0; ///进位
  22.     for (i=l1-1; i>=0; i--)
  23.         ///从右往左加
  24.     {
  25.         x1=s1[i]-'0';///字符变数字
  26.         x2=s2[i]-'0';
  27.         x3=x1-x2-j;
  28.         if(x3<0)(j=1,x3+=10);///进位处理
  29.         else (j=0);
  30.         s3=char(x3+'0')+s3;
  31.         ///数字变字符并加在结果左边

  32.     }
  33.     while (s3[0]=='0' && s3.size()>1) s3.erase(0,1);
  34.     ///去掉前面的0,最后一个0不去
  35.     cout<<s3;
  36.     return 0;
  37. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-12-26 03:22 , Processed in 0.205482 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表