传送门

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

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

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

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

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

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[],k[];
int a[],b[],c[];
void j(int,int,int);
void jf(int lena,int lenb,int lenc)
{if(lena>lenb)
{
while(lenc<=lena||lenc<=lenb)
{ if(a[lenc]<b[lenc])
{a[lenc+]--;a[lenc]+=;}
c[lenc]=a[lenc]-b[lenc];
lenc++;
}while(c[lenc]==)lenc--;
for(int i=lenc;i>=;i--)
cout<<c[i];
}
if(lena==lenb)
{if(strcmp(s,k)>=)
{while(lenc<=lena||lenc<=lenb)
{ if(a[lenc]<b[lenc])
{a[lenc+]--;a[lenc]+=;}
c[lenc]=a[lenc]-b[lenc];
lenc++;
}while(c[lenc]==)lenc--;
for(int i=lenc;i>=;i--)
cout<<c[i];
}
else j(lena,lenb,lenc);
}
if(lena<lenb)
j( lena, lenb, lenc);
}
void j(int lena,int lenb,int lenc)
{while(lenc<=lena||lenc<=lenb)
{ if(b[lenc]<a[lenc])
{b[lenc+]--;b[lenc]+=;}
c[lenc]=b[lenc]-a[lenc];
lenc++;
}while(c[lenc]==)lenc--;
cout<<"-";
for(int i=lenc;i>=;i--)
cout<<c[i]; }
int main()
{int lena,lenb,lenc,t=;
scanf("%s",s);t++;
scanf("%s",k);t++;
lena=strlen(s);
lenb=strlen(k);
for(int i=;i<=lena-;i++)
{a[lena-i]=s[i]-;
}
for(int i=;i<=lenb-;i++)
b[lenb-i]=k[i]-;
lenc=;
if(strcmp(s,k)!=)jf(lena,lenb,lenc);
else cout<<"";
}

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. seo:与优化相关的熊掌号

    可以做的有: 站点资源管理 天级收录(提交链接即可) 视频极速服务(暂只针对移动端体验优化)https://ziyuan.baidu.com/college/articleinfo?id=2411 原 ...

  2. ps教程

    http://www.16xx8.com/photoshop/xinshoujiaocheng/

  3. django 一个关于分组查询的问题分析

    ret=Emp.objects.values('dep').annotate(avg_salary=Avg('salary')) print(ret) # ---*******单表分组查询ORM总结: ...

  4. 《DSP using MATLAB》Problem 5.2

    代码: %% ---------------------------------------------------------------------------------- %% Output ...

  5. url中携带中文乱码问题

    1.问题描述 在项目中碰见url中经常传递中文参数时,容易出现乱码问题,现在就这个问题产生原因和解决的措施大概分析一下,希望过路人和我能引以为戒. 2.问题分析 由于我们利用URL传递参数这种方式是依 ...

  6. 经过强制类型转换以后,变量a, b的值分别为( )short a = 128; byte b = (byte) a;

    1.Java中用补码形式表示 2.第一位正负位,1表示负,0表示正. 3.原码:一个数的二进制表示.                  3的原码00000011   -3的 原码 10000011 4 ...

  7. oracle之logminer日志分析

    alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; select sysdate from dual; 执行增删操作 alter sy ...

  8. MySQL Replication--复制异常1

    ============================================== 问题描述: 1.从库环境:MySQL 5.7.19,主从都开启GTID模式 2.MySQL数据目录所有者被 ...

  9. ASP.NET MVC中常用的ActionResult类型

    常见的ActionResult 1.ViewResult 表示一个视图结果,它根据视图模板产生应答内容.对应得Controller方法为View. 2.PartialViewResult 表示一个部分 ...

  10. ML(附录4)——拉格朗日乘数法

    基本的拉格朗日乘子法(又称为拉格朗日乘数法),就是求函数 f(x1,x2,...) 在 g(x1,x2,...)=C 的约束条件下的极值的方法.其主要思想是引入一个新的参数 λ (即拉格朗日乘子),将 ...