JDOJ 1790: 高精度A-B
2024-09-09 04:28:57
JDOJ 1790: 高精度A-B
洛谷 P2142 高精度减法
题目描述
高精度减法
输入格式
两个整数a,b(第二个可能比第一个大)
输出格式
结果(是负数要输出负号)
输入输出样例
输入 #1复制
输出 #1复制
说明/提示
20%数据a,b在long long范围内
100%数据0 < a,b \leq 10^{10086}0<a,b≤1010086
题解:
(注:本题在JDOJ上的提交是输出超限的,本人一阵蒙圈,无奈请各位大佬指正)
(但是洛谷AC是没问题的)
高精度减法的模板题(QWQ)
减法的原理其实也是模拟,坑点一是借位,坑点二是判负输出。
代码漏洞百出,请大佬指正:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxx=1e5+1;
const int INF=1e5;
char aa[maxx],bb[maxx];
int a[maxx],b[maxx],flag;
int main()
{
scanf("%s%s",aa+1,bb+1);
int lena=strlen(aa+1);
int lenb=strlen(bb+1);
for(int i=1;i<=lena;i++)
a[i]=aa[lena-i+1]-'0';
for(int i=1;i<=lenb;i++)
b[i]=bb[lenb-i+1]-'0';
if(lena<lenb)
{
for(int i=1;i<=lenb;i++)
swap(a[i],b[i]);
flag=1;
}
int lenc=max(lena,lenb);
for(int i=1;i<=lenc;i++)
{
a[i]=a[i]-b[i];
if(a[i]<0)
a[i]+=10,a[i+1]--;
}
int t=INF;
if(flag)
printf("-");
while(!a[t])
{
t--;
if(t==0)
{
printf("0");
return 0;
}
}
if(a[t]==-1)
{
printf("-");
t--;
}
for(int i=t;i>=1;i--)
printf("%d",a[i]);
return 0;
}
最新文章
- 插件~NuGet与packages管理项目的包包
- win7 下配置Openssl
- css 前景色与背景色
- c++有默认参数的函数---4
- Win+R快速打开你的应用程序
- Windows Server 2003单网卡搭建VPN
- JSF 2 panelGrid example
- iOS 7隐藏statusbar
- requirejs2读书笔记
- php __FILE__,__CLASS__等魔术变量,及实例
- ORACLE备份手记
- C# 经典入门15章 -TabControl
- Jdk8的学习之lambda
- 【汇总】Linux常用脚本shell
- JGUI源码:实现图标按钮及下拉菜单(16)
- Linux Postfix 服务
- 关于git的一些命令
- pygame 笔记-6 碰撞检测
- MongoDB操作-备份和恢复,导入和导出
- C# TimeSpan获取 年月
热门文章
- 使用CMD命令部署.NetCore程序到IIS
- luogu1368 工艺
- SVG开发注意事项
- [LOJ 2721][UOJ 396][BZOJ 5418][NOI 2018]屠龙勇士
- (三十二)golang--面向对象之封装
- 《Web前端开发》等级考试样题~以国家“1+X”职业技能证书为标准,厚溥推出Web前端开发人才培养方案
- torch_10_stackGAN-V2
- Docker安装使用以及mlsql的docker安装使用说明
- [DP]Luogu 2014NOIP提高组 飞扬的小鸟题解
- css3的user-select属性设置文本内容能否被选择