传送门

因为忘了带书回家,所以因为这道题我卡了半小时所以写篇博客“纪念”下

高精度减法中,如果被减数比减数小,就要用减数减去被减数。接下来的判断就是本题的核心。直接用strcmp是不行的,例如100与99,用strcmp就是99大,所以我们还要再看长度。这里要特别注意一点,下面的代码是不行的。

  1. if(strcmp(s,k)>=0||lena>lenb)

所以判断这里我们就要分类讨论两次(第一次比较长度,第二次用strcmp)

代码如下(原谅蒟蒻的一匹的我代码长) 

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. char s[],k[];
  6. int a[],b[],c[];
  7. void j(int,int,int);
  8. void jf(int lena,int lenb,int lenc)
  9. {if(lena>lenb)
  10. {
  11. while(lenc<=lena||lenc<=lenb)
  12. { if(a[lenc]<b[lenc])
  13. {a[lenc+]--;a[lenc]+=;}
  14. c[lenc]=a[lenc]-b[lenc];
  15. lenc++;
  16. }while(c[lenc]==)lenc--;
  17. for(int i=lenc;i>=;i--)
  18. cout<<c[i];
  19. }
  20. if(lena==lenb)
  21. {if(strcmp(s,k)>=)
  22. {while(lenc<=lena||lenc<=lenb)
  23. { if(a[lenc]<b[lenc])
  24. {a[lenc+]--;a[lenc]+=;}
  25. c[lenc]=a[lenc]-b[lenc];
  26. lenc++;
  27. }while(c[lenc]==)lenc--;
  28. for(int i=lenc;i>=;i--)
  29. cout<<c[i];
  30. }
  31. else j(lena,lenb,lenc);
  32. }
  33. if(lena<lenb)
  34. j( lena, lenb, lenc);
  35. }
  36. void j(int lena,int lenb,int lenc)
  37. {while(lenc<=lena||lenc<=lenb)
  38. { if(b[lenc]<a[lenc])
  39. {b[lenc+]--;b[lenc]+=;}
  40. c[lenc]=b[lenc]-a[lenc];
  41. lenc++;
  42. }while(c[lenc]==)lenc--;
  43. cout<<"-";
  44. for(int i=lenc;i>=;i--)
  45. cout<<c[i];
  46.  
  47. }
  48. int main()
  49. {int lena,lenb,lenc,t=;
  50. scanf("%s",s);t++;
  51. scanf("%s",k);t++;
  52. lena=strlen(s);
  53. lenb=strlen(k);
  54. for(int i=;i<=lena-;i++)
  55. {a[lena-i]=s[i]-;
  56. }
  57. for(int i=;i<=lenb-;i++)
  58. b[lenb-i]=k[i]-;
  59. lenc=;
  60. if(strcmp(s,k)!=)jf(lena,lenb,lenc);
  61. else cout<<"";
  62. }

P2412高精度减法的更多相关文章

  1. HDU 5920 Ugly Problem 高精度减法大模拟 ---2016CCPC长春区域现场赛

    题目链接 题意:给定一个很大的数,把他们分为数个回文数的和,分的个数不超过50个,输出个数并输出每个数,special judge. 题解:现场赛的时候很快想出来了思路,把这个数从中间分为两部分,当位 ...

  2. 【洛谷P2142 高精度减法】

    题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 复制 2 1 输出样例#1: 复制 1 说明 ...

  3. 【洛谷p2142】高精度减法

    高精度减法第一遍没有过 高精度减法[传送门] 洛谷算法标签: 总之技术都在高精上了吧. 附代码: #include<iostream> #include<cstdio> #in ...

  4. 高精度减法--C++

    高精度减法--C++ 仿照竖式减法,先对其,再对应位相减. 算法处理时,先比较大小,用大的减小的,对应位再比较大小,用于作为借位符. #include <iostream> #includ ...

  5. P2142 高精度减法

    题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据 ...

  6. 洛谷 P2142 高精度减法(模板)

    题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据 ...

  7. 洛谷P2142 高精度减法 题解

    想找原题请点击这里:传送门 原题: 题目描述 高精度减法 输入格式 两个整数a,b(第二个可能比第一个大) 输出格式 结果(是负数要输出负号) 输入输出样例 输入 复制 输出 复制 说明/提示 %数据 ...

  8. Java实现 蓝桥杯 算法提高 高精度减法(JDK方法)

    试题 算法提高 高精度减法 问题描述 高精度减法 输入格式 两行,表示两个非负整数a.b,且有a > b. 输出格式 一行,表示a与b的差 样例输入 1234567890987654321 99 ...

  9. P2142_高精度减法(JAVA语言)

    思路:BigInteger double kill! //四行搞定 题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输 ...

随机推荐

  1. xdoj 1330---异或(找规律)

    我是打表找的规律 233 样例什么作用都没有 只会迷惑作用... 1330: 天才琪露诺的完美算数教室 时间限制: 1 Sec  内存限制: 128 MB  Special Judge提交: 37   ...

  2. PTA——猴子吃桃

    PTA 7-35 猴子吃桃问题 #include<stdio.h> int main() { ; scanf("%d",&n); ; i<n; i++) ...

  3. pycharm远程调试配置

    目录: 安装pycharm 配置pycharm远程调试 使用测试 一.安装pycharm(略) 二.配置pycharm远程调试 1.菜单--->Tools--->Deployment--- ...

  4. linux kernel笔记

    文章目录 关于linux内核中的__attribute__关键字 Linux kernel启动参数 gdt / ldt PCB 关于linux内核中的__attribute__关键字 part I: ...

  5. MySQL Lock--MySQL加锁规则

    ===================================================================== 淘宝林晓斌总结 在可重复读事务隔离级别下,加锁规则如下: 原 ...

  6. Java单播、广播、多播(组播)---转

    一.通信方式分类 在当前的网络通信中有三种通信模式:单播.广播和多播(组播),其中多播出现时间最晚,同时具备单播和广播的优点. 单播:单台主机与单台主机之间的通信 广播:当台主机与网络中的所有主机通信 ...

  7. taro 开发注意点

    taro 开发注意点: 注意点 原因 如果要支持 React Native 端,必须采用 Flex 布局,并且样式选择器仅支持类选择器,且不支持 组合器 Taro RN 端是基于 Expo,因此不支持 ...

  8. Springboot技术点汇总

    1. Springboot+MyBatis+druid 在启动类上面,添加注释@Configuration以及@ImportResource(location={"classpath:con ...

  9. docker: Error response from daemon: driver failed programming external connectivity on endpoint jolly_shockley

    1. docker 启动image错误 docker: Error response from daemon: driver failed programming external connectiv ...

  10. C++ Builder使用VC DLL

    好久没用BCB了,真的有些陌生了,当然个烂笔头吧. 1 先 implib c:\xxx.lib c:\xxx.dll 生成lib文件 2 #pragma comment(lib,"xxx.l ...