题目描述

高精度减法。

输入格式

两个整数 a,b(第二个可能比第一个大)。

输出格式

结果(是负数要输出负号)。

思路(debug的艰难过程)

前天刚刚学会了高精度加法,其实高精减的思路和加法类似,只是多加了借位的操作。基本步骤还是反向构造数组->模拟竖式减法->倒序输出。但有两个点需要注意:

1.由于a,b的大小关系不确定,所以我的思路是统一转换成a>b的模式,若a<b则交换a,b并输出负号。一开始比较a和b的时候我是这样做的:

if(strcmp(s1,s2)<0)

然后有3个点WA了,看了测试点样例(30141,8160)后发现只用strcmp函数完全不行,因为strcmp函数是自左向右逐个字符比较,出现不同的字符则返回s1[i]-s2[i]的值。在这个样例中s1[0]=='3',s2[0]=='8',strcmp(s1,s2)<0,需要交换两字符串,然而观察发现a>b,并不需要交换。看了dalao的代码才发现这个比较方法如此巧妙:

if(strlen(s1)<strlen(s2)||strlen(s1)==strlen(s2)&&strcmp(s1,s2)<0)

2.输出答案时,由于答案的位数在strlen(s1)~1之间,我们将输出的范围定在c[1]-c[strlen(s1)],那么如果c的位数小于strlen(s1),答案就会出现前导0,这时我们就需要解决消去前导0的问题。我的想法是,第一次出现非0数时进行标记,若c[i]==0&&flag则证明该0不是前导0,进行输出:

int flag=0;for(int i=strlen(s1);i>0;i--){if(c[i]!=0){flag=1;printf("%d",c[i]);}if(c[i]==0&&flag) printf("%d",c[i]);}

还有一种情况没有解决:如果a==b,只需要输出0怎么办。上面代码的flag可以轻松解决这个问题:如果循环结束时flag==0,那么证明答案中只有0,也就是a==b,此时输出0即可。

if(flag==0) printf("0");

完整代码:

#include<stdio.h>
#include<string.h>
int main(){char s1[11000],s2[11000];//约定a>b int a[11000]={0},b[11000]={0};scanf("%s %s",s1,s2);if(strlen(s1)<strlen(s2)||strlen(s1)==strlen(s2)&&strcmp(s1,s2)<0){//巧妙比较两数大小,不能简单地用字符串比较函数 char tem[11000];strcpy(tem,s1);strcpy(s1,s2);strcpy(s2,tem);printf("-");}for(int i=1;i<=strlen(s1);i++){a[i]=s1[strlen(s1)-i]-'0';}for(int i=1;i<=strlen(s2);i++){b[i]=s2[strlen(s2)-i]-'0';}int c[11000]={0};for(int i=1;i<=strlen(s1);i++){if(a[i]-b[i]<0){a[i]+=10;a[i+1]--;}c[i]=a[i]-b[i];}int flag=0;for(int i=strlen(s1);i>0;i--){if(c[i]!=0){flag=1;printf("%d",c[i]);}if(c[i]==0&&flag) printf("%d",c[i]);}if(flag==0) printf("0");return 0;
}

洛谷 P2142 高精度减法相关推荐

  1. 高精度减法(洛谷-P2142)

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

  2. 洛谷专题训练 ——【算法1-1】模拟与高精度

    洛谷题单[算法1-1]模拟与高精度 ACM-ICPC在线模板 题单链接: [算法1-1]模拟与高精度 下面的这一坨都是洛谷题单上的东东 题单简介 恭喜大家完成了第一部分语言入门,相信大家已经可以使用 ...

  3. 高精度——A+B Problem(洛谷 P1601)

    高精度算法指的是可以计算很大整数的高精度运算的方法 此题选自洛谷P1601 用数组来模拟非常长的整数,这意味着可以用数组的每一位记录那个数字上的每一位. 也就是说,可以用n位数组来记录一个n位数字. ...

  4. 洛谷算法题单:模拟与高精度例题(上)

    一:模拟 想要利用计算机解决现实生活中的一些复杂的问题时,建立模型是解决问题的关键. 举个生活中常见的例子:我们拿到了某次数学考试的成绩单,现在需要知道谁考得最好.当然不能把成绩单对着电脑晃一晃,然后 ...

  5. (快速幂算法+高精度)洛谷P1045 麦森数

    前言   故事的最后,让我们以一道十分经典的题目--<麦森数>来结尾.接受现实吧,总会有我们没准备过的高精度运算出现.我们固然可以提前把高精度的快速幂模板也准备好,但是总会有百密一疏的时候 ...

  6. 递推+高精度——蜜蜂路线(洛谷 P2437)

    题目选自洛谷P2437 思路和斐波那契一样,不过特判a[0][1]=0a[1[1]=1,a[2][1]=1,之后,a[i][j]=a[i-1][j]+a[i-2][j],这是主要公式,为什么开二维数组 ...

  7. python高精度乘法_洛谷P1919--A*B Problem升级版(NTT优化高精度乘法)

    题目背景 本题数据已加强,请使用 FFT/NTT,不要再交 Python 代码浪费评测资源. 题目描述 给你两个正整数 a,b,求$ a \times b$. 输入格式 第一行一个正整数,表示 a: ...

  8. 洛谷算法题单:模拟与高精度例题(下)

    接着上篇的例题. 1.洛谷P4924魔法少女小Scarlet 题目描述: Scarlet最近学会了一个数组魔法,她会在n∗n二维数组上将一个奇数阶方阵按照顺时针或者逆时针旋转90°, 首先,Scarl ...

  9. 洛谷 - 试炼场(全部题目备份)

    整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...

  10. 快速幂||取余运算【模板】(洛谷P1226题题解,Java语言描述)

    题目要求 P1226题目链接 分析 标准的快速幂取模算法板子,之前这个算法我在这篇文章中讲过了:<快速幂算法详解&&快速幂取模算法详解>. 这里选择使用比较简单的API实现 ...

最新文章

  1. The final five question form qhpMaster
  2. python简易图形-python简单图形界面GUI入门——easygui【转】
  3. 面试题编程题11-python 生成随机数
  4. 游戏盾正式发布:撬动DDoS攻防的天平
  5. java 数据库工厂_月光软件站 - 编程文档 - Java - 简单的数据库连接工厂实现
  6. 数据结构python吕云翔_《数据结构》吕云翔编著第1章绪论习题解答
  7. DNS常用记录类型和服务发现(DNS解析)
  8. 39个史诗级奇葩代码注释,程序不会崩,但程序员会
  9. oracle查效能,Oracle 11g物理Active Data Guard实时查询(Real-time query)特性
  10. 【ASP.NET 问题】IIS发布网站后出现 “处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误“的解决办法
  11. HarmonyOS DevEco Studio 配置本地模拟器
  12. liunx服务器间拷贝文件,linux 不同服务器之间拷贝文件
  13. Java查看class的JVM,指令集文件--javap -c ClassName
  14. 华为p50 pro 鸿蒙,华为p50pro有双系统吗-采用鸿蒙系统吗
  15. ASP.NET实现文件上传和下载
  16. 揪出系统中秘密隐藏的木马(下)
  17. removeNode is not defined removeNode is not a function
  18. 分享7个比B站更刺激的老司机网站,别轻易点开
  19. SpringBoot中的 ApplicationEvent和Listener
  20. python 题目是idle的文件模式是什么_python的idle如何使用

热门文章

  1. Verilog中always与assign详解
  2. Eclipse设置护眼(绿豆沙)颜色
  3. java计算机毕业设计体检系统源码+系统+数据库+lw文档
  4. python爬虫爬取图片详解_Python使用爬虫爬取静态网页图片的方法详解
  5. js 将图片置灰_将图片转换成黑白(灰色)的css和js的方法
  6. 如何看台式机计算机编号,如何查看台式电脑的主机编号和型号
  7. mybatisPlus笔记
  8. kubectl exec
  9. java 解压7z_实例展示使用Java压缩和解压缩7z文件的方法
  10. 高级PHP工程师所应该具备的一些技能