博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高精度计算
阅读量:6933 次
发布时间:2019-06-27

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

高精度加法

 

#include
using namespace std;int x[1000005];int main(){ string a,b; cin>>a>>b; if(a.size()
=10) { x[i]-=10; x[i+1]++; } } int len=a.size(); if(x[len+1]>0) len++; for(int i=len; i>=1; i--) printf("%d", x[i]);}

 做法:得到两个数字串a,b以后,使a串长度默认比b大,否则交换,然后用x数组倒着装a,b两个数字串,然后相加,大于10的进一位,然后特判有没有长度+1,最后在将x数组倒着输出即可。

 

高精度减法

 

 

#include
using namespace std;int x[10005];int main(){ string a,b; cin>>a>>b; int flag=0; if(a.size()
=1; i--) printf("%d", x[i]); return 0;}

做法:先判断一下被减数和减数的大小关系,如果被减数更小的话用flag记录一下输出时加负号,同时在交换一下a,b,使默认a比b大,然后用x数组倒着装a,然后再倒着减b数组,

然后判断x数组有没有负数,有的话+10,后面一位-1,最后特判一下x数组长度,末尾0要去掉,然后倒着输出即可。

 

高精度乘法

#include
using namespace std;int x[5000];int m[5000],n[5000];int main(){ string a,b; cin>>a>>b; for(int i=1; i<=a.size(); i++) m[i]=a[a.size()-i]-'0'; for(int i=1; i<=b.size(); i++) n[i]=b[b.size()-i]-'0'; for(int i=1; i<=a.size(); i++) for(int j=1; j<=b.size(); j++) x[i+j-1]+=m[i]*n[j]; for(int i=1; i<=a.size()+b.size(); i++) { if(x[i]>=10) { x[i+1]+=x[i]/10; x[i]=x[i]%10; } } int len=a.size()+b.size(); while(x[len]==0) { len--; if(len==0) { printf("0"); return 0; } } for(int i=len; i>=1; i--) printf("%d", x[i]);}

做法:先将两个读入的数字字符串倒着装到两个整形数组中,然后模拟乘法,然后每一位数字/10是多少下一位加多少,本位对10取余,最后从末第一个不为零的数字倒着输出即可

 

转载于:https://www.cnblogs.com/dongdong25800/p/10542379.html

你可能感兴趣的文章
分析称iPhone漏洞或致手机受钓鱼攻击
查看>>
浅析Google Chrome 2.0浏览器安全性能
查看>>
WPF中使用amCharts绘制“.NET技术”股票K线图
查看>>
斯坦福大学科研软件
查看>>
不开辟用于交换数据的临时空间,如何完成字符串的逆序
查看>>
分析网站配色的Firefox插件[前端工具]
查看>>
解决来QQ消息后歌曲音量降低问题
查看>>
C++类和对象
查看>>
editplus清除历史记录
查看>>
遇见CSS3滤镜
查看>>
更加安全的存取账户密码
查看>>
(android 实战总结)android第三方组件实现总结
查看>>
HTML5浏览器测试网站汇总
查看>>
vim Sets [转]
查看>>
PrimeFaces 3.0发布:面向JSF2的Ajax、移动与IE 9组件
查看>>
使用 Spring 2.5 基于注解驱动的 Spring MVC
查看>>
java Final类和方法(翻译自Java Tutorials)
查看>>
(转)关于List中FindAll用法的一些简单示例
查看>>
RESTful测试工具-RESTClient
查看>>
linux下如何获取每个线程的CPU占用率
查看>>