P2412高精度减法
因为忘了带书回家,所以因为这道题我卡了半小时所以写篇博客“纪念”下
高精度减法中,如果被减数比减数小,就要用减数减去被减数。接下来的判断就是本题的核心。直接用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高精度减法的更多相关文章
- HDU 5920 Ugly Problem 高精度减法大模拟 ---2016CCPC长春区域现场赛
题目链接 题意:给定一个很大的数,把他们分为数个回文数的和,分的个数不超过50个,输出个数并输出每个数,special judge. 题解:现场赛的时候很快想出来了思路,把这个数从中间分为两部分,当位 ...
- 【洛谷P2142 高精度减法】
题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 复制 2 1 输出样例#1: 复制 1 说明 ...
- 【洛谷p2142】高精度减法
高精度减法第一遍没有过 高精度减法[传送门] 洛谷算法标签: 总之技术都在高精上了吧. 附代码: #include<iostream> #include<cstdio> #in ...
- 高精度减法--C++
高精度减法--C++ 仿照竖式减法,先对其,再对应位相减. 算法处理时,先比较大小,用大的减小的,对应位再比较大小,用于作为借位符. #include <iostream> #includ ...
- P2142 高精度减法
题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据 ...
- 洛谷 P2142 高精度减法(模板)
题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据 ...
- 洛谷P2142 高精度减法 题解
想找原题请点击这里:传送门 原题: 题目描述 高精度减法 输入格式 两个整数a,b(第二个可能比第一个大) 输出格式 结果(是负数要输出负号) 输入输出样例 输入 复制 输出 复制 说明/提示 %数据 ...
- Java实现 蓝桥杯 算法提高 高精度减法(JDK方法)
试题 算法提高 高精度减法 问题描述 高精度减法 输入格式 两行,表示两个非负整数a.b,且有a > b. 输出格式 一行,表示a与b的差 样例输入 1234567890987654321 99 ...
- P2142_高精度减法(JAVA语言)
思路:BigInteger double kill! //四行搞定 题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输 ...
随机推荐
- Failed to start component [StandardEngine[Catalina].stadardHost[loclahost].StandardContent[/GarageMgtB]]
错误如图: 新导入的一个web工程,在problems中显示错误是:Target runtime Apache Tomcatv8.0 is not defined. 终于找到解决方法.方法是:在工程目 ...
- java-权限修饰符的区别
说明:所谓访问权限,是指对象是否可以通过“.”运算符操作自己的变量或通过“.”运算符使用类中的方法. 1.Java中的四种访问修饰符:public.protected.default(无修饰符,默认) ...
- oracle ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库(转载+自己经验总结)
字符集子集向其超集转换是可行的,如此例 ZHS16GBK转换为AL32UTF8. 导出使用的字符集将会记录在导出文件中,当文件导入时,将会检查导出时使用的字符集设置,如果这个字符集不同于导入客户端的N ...
- 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 ...
- Collection接口中方法的使用
Collection:集合的接口 1.Collection和ArrayList和List的关系 ArrayList implement(实现) List List ...
- MySQL--Checkpoint基础
===================================================== Checkpint 分两种:Sharp Checkpoint : 在服务器正常关闭时,将所有 ...
- Module Sources
转自:https://www.terraform.io/docs/modules/sources.html 主要记录module source 的格式 The source argument in a ...
- Makefile introduction (very old presentation)
- 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 ...
- 06机器学习实战之SVM
对偶的概念 https://blog.csdn.net/qq_34531825/article/details/52872819?locationNum=7&fps=1 拉格朗日乘子法.KKT ...