博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codevs 3115 高精度练习--减法
阅读量:6975 次
发布时间:2019-06-27

本文共 1327 字,大约阅读时间需要 4 分钟。

题目大意:

给定两个数a、b , 算出a-b;(a和b的位数各不超过500位)

 

思路:

模拟减法:

 

代码:

#include 
#include
#include
using namespace std;int ans[501] = {0};int sub(string a, string b)// a is the big number, b is smaller.{ int m = a.length()-1; int n = b.length()-1; int k = 0; for(int i = m; i >= 0; i--) { if(n >= 0) { if(a[i] >= b[n]) ans[k++] = int(a[i]-b[n]); else { ans[k++] = int(a[i]+10-b[n]); int tmp = i-1; while(a[tmp] == '0') { a[tmp] = '9'; tmp--; } a[tmp] = char(a[tmp]-1); } n--; } else { ans[k++] = int(a[i] - '0'); } } return k;}int main(){ string a,b; cin >> a >> b; int k; if(a.length() < b.length() || (a.length() == b.length() && a < b)) { k = sub(b,a)-1; cout << "-"; } else if(a.length() > b.length() || (a.length() == b.length() && a > b)) { k = sub(a,b)-1; } else { cout << "0"; } while(ans[k] == 0) k--; for(int i = k; i >= 0; i--) { cout << ans[i]; } return 0;}

  

转载于:https://www.cnblogs.com/zyqBlog/p/6219517.html

你可能感兴趣的文章
讨论下IDS的绕过
查看>>
__cplusplus的用处
查看>>
西门子PLC学习笔记二-(工作记录)
查看>>
MATLAB——scatter的简单应用
查看>>
近段时间学习html和CSS的一些细碎总结
查看>>
《千只鹤》--[日]川端康成
查看>>
Windows Mobile 6.0 SDK和中文模拟器下载
查看>>
UVa 10701 - Pre, in and post
查看>>
解决Shockwave flash在chrome浏览器上崩溃的问题
查看>>
【Chat】实验 -- 实现 C/C++下TCP, 服务器/客户端 "多人聊天室"
查看>>
C#不错的扩展工具类
查看>>
NAND FLASH
查看>>
LTP介绍
查看>>
图片存储思考:
查看>>
Android程序完全退出的三种方法
查看>>
融合应用11.1.8安装,一步一步的引导
查看>>
Spring mvc Data Redis—Pub/Sub(附Web项目源码)
查看>>
【Stage3D学习笔记续】山寨Starling(八):核心优化(批处理)的实现
查看>>
自定义数字格式字符串输出示例
查看>>
一步一步写算法(之图结构)
查看>>