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(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输 ...
随机推荐
- 洛谷P1070 道路游戏(dp+优先队列优化)
题目链接:传送门 题目大意: 有N条相连的环形道路.在1-M的时间内每条路上都会出现不同数量的金币(j时刻i工厂出现的金币数量为val[i][j]).每条路的起点处都有一个工厂,总共N个. 可以从任意 ...
- ACM-ICPC 2018 沈阳赛区网络预赛-K:Supreme Number
Supreme Number A prime number (or a prime) is a natural number greater than 11 that cannot be formed ...
- 《DSP using MATLAB》Problem 5.3
这段时间爬山去了,山中林密荆棘多,沟谷纵横,体力增强不少. 代码: %% +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
- hdu4135 Co-prime 容斥原理
Given a number N, you are asked to count the number of integers between A and B inclusive which are ...
- 免费获取pptv会员
打开上面的网址!领取会员!http://vip.pptv.com/activity/2016/licaitong http://vip.pptv.com/activity/2016/caifutong ...
- Go Example--Hello
Hello world package main import "fmt" //通过import导入fmt标准包 func main() { //语句结尾不需要;分号, //Pri ...
- js动态加载数据并合并单元格
js动态加载数据合并单元格, 代码如下所示,可复制直接运行: <!DOCTYPE HTML> <html lang="en-US"> <head> ...
- combineReducers 对数据进行拆分管以及使用immutable.js
1 使用combineReaducers 整合reducers import { combineReducers } from 'redux-immutable'; import { reducer ...
- Redux 学习笔记
1:首先安装redux: npm install --save redux 2:引入redux : import { createStore } from 'redux'; //首先创建执行函数,Re ...
- expect脚本实例
#!/usr/bin/expect //必须写这句,表明使用expect,有些系统可能没有自带,使用yum install expect -y 安装 spawn ssh 192.168.2.128 / ...