传送门

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

高精度减法中,如果被减数比减数小,就要用减数减去被减数。接下来的判断就是本题的核心。直接用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. 最长公共子序列与最长公共字串 (dp)转载http://blog.csdn.net/u012102306/article/details/53184446

    1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...

  2. 本地存储之application cache和localstorage

    http://blog.csdn.net/kingliguo/article/details/52637087

  3. XTU1254 Blance 如何实现称出1∼n 克的物品,请问最少需要几颗砝码?

    题目描述 小明有一架天平,小明想称出1∼n 克的物品,请问最少需要几颗砝码? 比如小明想称出1∼4 克的物品,需要2颗砝码,为1和3克. balance 输入 第一行是一个整数T(1≤T≤10000) ...

  4. (10)MySQL触发器(同时操作两张表)

    什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性. 举个例子,比如你现在有两个表[用户表]和[日志 ...

  5. 《DSP using MATLAB》Problem 5.36

    第1小题 代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

  6. 浅谈log4j-4-不同目的地(转)

    public class DifferentAppender { private static Logger logger=Logger.getLogger(DifferentAppender.cla ...

  7. 解决LNMP环境无法显示所有WordPress主题及无法编辑主题页面

    解决方法: 第一.编辑/usr/local/php/etc/php.ini文件 第二.找到disable_functions这一行中,删除"scandir,"这一段脚本,然后保存这 ...

  8. Go Example--函数

    package main import ( "fmt" ) func main() { res := plus(1,2) fmt.Println("1+2=", ...

  9. 01 Linux简介

    1.Linux简介 UNIX与Linux发展史 Unix在1969年,美国贝尔实验室的肯汤普森在DEC PDP-7机器上开发出了UNIX系统. Linux出现于1991年,是由芬兰赫尔辛基大学学生李纳 ...

  10. 主机-配件-接口-整机-3c-2

    pc机,服务器,智能手机与各种嵌入式乃至物联网 http://www.mifalife.net/hk/mall.html MIFA F5 户外无线蓝牙音箱2.0声道高保真可通话插卡便携低音炮迷你iph ...