传送门

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

高精度减法中,如果被减数比减数小,就要用减数减去被减数。接下来的判断就是本题的核心。直接用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. Failed to start component [StandardEngine[Catalina].stadardHost[loclahost].StandardContent[/GarageMgtB]]

    错误如图: 新导入的一个web工程,在problems中显示错误是:Target runtime Apache Tomcatv8.0 is not defined. 终于找到解决方法.方法是:在工程目 ...

  2. java-权限修饰符的区别

    说明:所谓访问权限,是指对象是否可以通过“.”运算符操作自己的变量或通过“.”运算符使用类中的方法. 1.Java中的四种访问修饰符:public.protected.default(无修饰符,默认) ...

  3. oracle ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库(转载+自己经验总结)

    字符集子集向其超集转换是可行的,如此例 ZHS16GBK转换为AL32UTF8. 导出使用的字符集将会记录在导出文件中,当文件导入时,将会检查导出时使用的字符集设置,如果这个字符集不同于导入客户端的N ...

  4. Two Sum II - Input array is sorted

    Given an array of integers that is already sorted in ascending order, find two numbers such that the ...

  5. Collection接口中方法的使用

    Collection:集合的接口 1.Collection和ArrayList和List的关系 ArrayList      implement(实现)       List List        ...

  6. MySQL--Checkpoint基础

    ===================================================== Checkpint 分两种:Sharp Checkpoint : 在服务器正常关闭时,将所有 ...

  7. Module Sources

    转自:https://www.terraform.io/docs/modules/sources.html 主要记录module source 的格式 The source argument in a ...

  8. Makefile introduction (very old presentation)

  9. TCP/IP option data aligement issue cause system broken

    1      Problem Description The field reports show that xxx panel will lockup and then reboot while d ...

  10. 06机器学习实战之SVM

    对偶的概念 https://blog.csdn.net/qq_34531825/article/details/52872819?locationNum=7&fps=1 拉格朗日乘子法.KKT ...