高精度减法

每当要进行精度较高的运算时,就要用到高精度。
下图是各个类型的数值范围:


如果想不起各个类型占多少字节,可以采用下面的方法:

printf("%d %d",sizeof(int),sizeof(long long));

格式为:
sizeof(数据类型)

可以把值赋值给一个变量,也可以直接输出;
好了,回到正点。我们先看例题:

大整数减法

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 9471 通过数: 5448
【题目描述】
求两个大的正整数相减的差。

【输入】
共2行,第1行是被减数a,第2行是减数b(a>=b)。每个大整数不超过200位,不会有多余的前导零。

【输出】
一行,即所求的差。

【输入样例】
9999999999999999999999999999999999999
9999999999999
【输出样例】
9999999999999999999999990000000000000

读完题目,是不是发现这就是赤裸裸的模板题目;大概的思路为3步:
一,读入a和b;
二,进行计算,如果a[i]<b[i],就借位;
三,输出;

先是读数:

int i;
int a[205],b[205],lena,lenb;
char t[205],t1[205];
scanf("%s %s",t,t1);
lena=strlen(t);
lenb=strlen(t1);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(i=0;i<lena;i++)a[lena-i]=t[i]-48;
for(i=0;i<lenb;i++)b[lenb-i]=t1[i]-48;

再进行计算:

i=1;x=0;
while((i<=lena) or (i<=lenb)){
a[i]=a[i]-b[i]-x;
if(a[i]<0){
a[i]+=10;
x=1;
}
else x=0;
i++;
}

最后再输出:

bool f=false;
for(i=N-1;i>=1;--i){
if(a[i]!=0){
printf("%d",a[i]);
if(!f)f=true;
}
else if(f)printf("%d",a[i]);
}
if(!f)printf("0");

完整AC程序:

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
const int N=205;
int main(){
int i;
int a[N],b[N],lena,lenb,x;
char t[N],t1[N];
scanf("%s %s",t,t1);
lena=strlen(t);
lenb=strlen(t1);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(i=0;i<lena;i++)a[lena-i]=t[i]-48;
for(i=0;i<lenb;i++)b[lenb-i]=t1[i]-48;
i=1;x=0;
while((i<=lena) or (i<=lenb)){
a[i]=a[i]-b[i]-x;
if(a[i]<0){
a[i]+=10;
x=1;
}
else x=0;
i++;
}
bool f=false;
for(i=N-1;i>=1;--i){
if(a[i]!=0){
printf("%d",a[i]);
if(!f)f=true;
}
else if(f)printf("%d",a[i]);
}
if(!f)printf("0");
return 0;
}

记得点赞哦

高精度减法(c++)的更多相关文章

  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. P2412高精度减法

    传送门 因为忘了带书回家,所以因为这道题我卡了半小时所以写篇博客“纪念”下 高精度减法中,如果被减数比减数小,就要用减数减去被减数.接下来的判断就是本题的核心.直接用strcmp是不行的,例如100与 ...

  5. 高精度减法--C++

    高精度减法--C++ 仿照竖式减法,先对其,再对应位相减. 算法处理时,先比较大小,用大的减小的,对应位再比较大小,用于作为借位符. #include <iostream> #includ ...

  6. P2142 高精度减法

    题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据 ...

  7. 洛谷 P2142 高精度减法(模板)

    题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据 ...

  8. 洛谷P2142 高精度减法 题解

    想找原题请点击这里:传送门 原题: 题目描述 高精度减法 输入格式 两个整数a,b(第二个可能比第一个大) 输出格式 结果(是负数要输出负号) 输入输出样例 输入 复制 输出 复制 说明/提示 %数据 ...

  9. Java实现 蓝桥杯 算法提高 高精度减法(JDK方法)

    试题 算法提高 高精度减法 问题描述 高精度减法 输入格式 两行,表示两个非负整数a.b,且有a > b. 输出格式 一行,表示a与b的差 样例输入 1234567890987654321 99 ...

  10. P2142_高精度减法(JAVA语言)

    思路:BigInteger double kill! //四行搞定 题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输 ...

随机推荐

  1. server sent events

    server sent events server push https://html5doctor.com/server-sent-events/ https://developer.mozilla ...

  2. NGK治理机制研究

    治理机制是区块链项目的重要设计.随着项目的运行,生态中的参与者需要根据实际运行情况对项目进行必要的更新和升级,以使项目持续良性发展.治理机制的作用是使不同参与者最终达成共识.治理机制直接决定这个网络生 ...

  3. 什么是NGK算力挖矿?怎么使用USDN购买算力?

    NGK公链项目即将正式上线,NGK项目中重要生态NGK算力挖矿也将启动,正式开启DPOSS挖矿.因为具有低能耗,低搭建费用,高收益等特点,可以想象如果正式上线必将引起行业瞩目. NGK算力挖矿项目为N ...

  4. 翻译:《实用的Python编程》01_06_Files

    目录| 上一节(1.5 列表) | 下一节 (1.7 函数) 1.6 文件管理 大多数的程序需要从某处读取输入.本节讨论文件访问. 文件输入和输出 打开一个文件: f = open('foo.txt' ...

  5. [C#] 尝鲜.net6.0的C#代码热重载

    看到.NET 6 Preview 1 发布,里面"除了 XAML 热重载之外,还将支持 C# 代码的热重载"一句,觉得有必要试试看,因为XAML热重载功能用起来确实很爽. 首先要下 ...

  6. Dyno-queues 分布式延迟队列 之 生产消费

    Dyno-queues 分布式延迟队列 之 生产消费 目录 Dyno-queues 分布式延迟队列 之 生产消费 0x00 摘要 0x01 前情回顾 1.1 设计目标 1.2 选型思路 0x02 产生 ...

  7. linux 安装node和pm2

    用yum安装 curl -sL https://rpm.nodesource.com/setup_10.x | bash - yum install -y nodejs npm install -g ...

  8. jQuery编写组件的几种方式

    原文链接:https://w.cnblogs.com/xiao-xi/p/8572471.html 三种方式: 1.通过$.extend()来扩展jQuery 2.通过$.fn 向jQuery添加新的 ...

  9. tomcat部署项目问题

    tomcat部署项目的时候,报内存溢出,一种解决方案是直接添加内存,网上都有教程,如下: Windows下,在文件/bin/catalina.bat,Linux下,在文件/bin/catalina.s ...

  10. C#日志使用

    本文参考链接 日志框架 框架选择:NLog 安装方法,Nuget命令行:Install-Package NLog 常用规则 尽量不要在循环中打印日志. 应输出错误的堆栈信息:e.Message仅为异常 ...