高精(第一篇)
来源:互联网 发布:杭州 软件开发 编辑:程序博客网 时间:2024/06/06 09:05
这篇博客只有高精加法的代码(不含负数),预计带负数的12.7会出,就酱紫。
(高精是什么东西我相信大家都知道,我就不详细说了(不知道的百度))高精其实可以相当于是一个强模拟,它模拟的是一个列竖式计算,总体思想如下:
先读入两个字符串,再把它一个一个分解,分别存入两个数组中,如:
字符串1:123456789123456789
字符串2:987654321987654321
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
数组a:9 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 2 1
数组b:1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
这样就可以将它们的末尾相加,加到c数组中,处理进位并输出,非伪代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string n,m;
int i,a[1001]={},b[1001]={},c[1001]={},lena,lenb,len,x=0;
cin>>n>>m; //输入两个字符串
lena=n.size();
lenb=m.size();
for(i=0;i<lena;i++) a[lena-i]=n[i]-'0';
for(i=0;i<lenb;i++) b[lenb-i]=m[i]-'0';//将字符串的末位移动到首位,容易处理加减。这里要特别注意的是c++的数组是从'0'开始的,所以循环要从零开始
if(lena>lenb) len=lena;else len=lenb;//选择字符串长度较大的相加
for(i=1;i<=len;i++)
{
c[i]=a[i]+b[i]+x;
x=c[i]/10;
c[i]=c[i]%10;
}
//两数相加,并处理进位
if(x>0)
{
len++;
c[len]++;
}
//如果还有首位有进位未处理,就在首位+1
for(i=len;i>=1;i--) cout<<c[i];//输出
return 0;
}
- 高精(第一篇)
- 高性能服务器架构 第一篇
- 高德地图开发之第一篇
- 第一篇(序)
- 如何为一个高负荷站点配置tomcat连接器(connector)【译文】(第一篇)
- 【读书笔记】Linux高性能服务器编程(第一篇 第一章 1.1)
- 【读书笔记】Linux高性能服务器编程(第一篇 第一章 1.2-1.6)
- 【读书笔记】Linux高性能服务器编程(第一篇 第二章)
- 【读书笔记】Linux高性能服务器编程(第一篇 第三章)
- 【读书笔记】Linux高性能服务器编程(第一篇 第四章)
- 从0到TrustZone第一篇:探究高通的 SEE(安全可执行环境)
- 每日工作 第一篇(一天一篇)
- 高质量android应用开发技巧,第一篇
- 如何快速发表第一篇高水平论文
- 国际化困境(第一篇)
- 第一篇(学习心得--钩子)
- 关于moodle(第一篇)
- 搜索第一篇(迷宫)
- 解决macos 终端命令不可用
- 171206之在加载数据的时候加载操作
- 前端学习入门
- DevExpress控件GridControl开发常用要点(项目总结版)
- Android内存优化--OOM
- 高精(第一篇)
- 把二叉树打印成多行
- 将excel树形结构的数据导入数据库
- python基础学习(二)
- jsbc.properties
- angular2中 使用mqtt
- servlet生命周期
- 【java基础】15.I/O:序列化
- How to check memory leaks in android app?