JDOJ 1790: 高精度A-B

JDOJ传送门

洛谷 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;
}

最新文章

  1. 插件~NuGet与packages管理项目的包包
  2. win7 下配置Openssl
  3. css 前景色与背景色
  4. c++有默认参数的函数---4
  5. Win+R快速打开你的应用程序
  6. Windows Server 2003单网卡搭建VPN
  7. JSF 2 panelGrid example
  8. iOS 7隐藏statusbar
  9. requirejs2读书笔记
  10. php __FILE__,__CLASS__等魔术变量,及实例
  11. ORACLE备份手记
  12. C# 经典入门15章 -TabControl
  13. Jdk8的学习之lambda
  14. 【汇总】Linux常用脚本shell
  15. JGUI源码:实现图标按钮及下拉菜单(16)
  16. Linux Postfix 服务
  17. 关于git的一些命令
  18. pygame 笔记-6 碰撞检测
  19. MongoDB操作-备份和恢复,导入和导出
  20. C# TimeSpan获取 年月

热门文章

  1. 使用CMD命令部署.NetCore程序到IIS
  2. luogu1368 工艺
  3. SVG开发注意事项
  4. [LOJ 2721][UOJ 396][BZOJ 5418][NOI 2018]屠龙勇士
  5. (三十二)golang--面向对象之封装
  6. 《Web前端开发》等级考试样题~以国家“1+X”职业技能证书为标准,厚溥推出Web前端开发人才培养方案
  7. torch_10_stackGAN-V2
  8. Docker安装使用以及mlsql的docker安装使用说明
  9. [DP]Luogu 2014NOIP提高组 飞扬的小鸟题解
  10. css3的user-select属性设置文本内容能否被选择