高精度加法
来源:互联网 发布:篱笆是什么意思网络语 编辑:程序博客网 时间:2024/06/06 08:24
高精度算法就是当我们需要将超出我们能用整数类型表示的数字进行运算的时候所需要用到的算法。
其本质就是用字符串将数储存,然后根据算法的规则进行逐位运算。
以下为高精度加法的代码:
#include<cstdio>#include<iostream>#include<cstring>using namespace std;char m[100],n[100];void jiafa(char x[],char y[]){int a[100],b[100],c[100],lena,lenb,sign=0; //a 加数数组 b 被加数数组 c和数组 sign标记位置 memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));lena=strlen(x);lenb=strlen(y);for(int i=lena-1;i>=0;i--) //把x倒着存到a数组中 a[sign++]=x[i]-'0'; sign=0; //这步很重要 因为用同一个变量来作为标记,需要重置sign,也可另设变量完成下面的存入for(int i=lenb-1;i>=0;i--) //把y倒着存到b数组中 此时a,b末位对齐 b[sign++]=y[i]-'0';for(int i=0;i<=100;i++) //计算和 {c[i]=c[i]+a[i]+b[i];c[i+1]=c[i]/10; //当某位大于等于10时,向前进位 c[i]%=10; //当位保存尾数 }for(int i=99;i>=0;i--){if(c[i]!=0){sign=i;break; //从和数组从后往前扫,找到第一个不为0的位置 }}for(int i=sign;i>=0;i--) //从该位倒着输出,为和 cout<<c[i];cout<<endl;}int main(){gets(m); //整段读入m数组 gets(n); //同上 jiafa(m,n); //调用子程序 return 0;}
阅读全文
0 0
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度 加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- c++标准库-chrono
- 使用 Azure CLI 创建和管理 Linux VM
- event对象中 target和currentTarget 属性的区别
- Third Tools
- spring mvc 基于表单的认证过程及cookie应用和session管理
- 高精度加法
- CentOS中搭建Redis伪分布式集群
- 03 Jme3和Nifty1.4.2中文显示
- django虚拟环境搭建
- 11月15日云栖精选夜读:分布式服务框架Dubbo疯狂更新!阿里开源要搞大事情?
- hive 数字长度控制
- Lock锁 Condition 和线程的关系详解
- 个人微信小程序(生活服务)——天气页面
- AndroidStudio 编译异常java.lang.OutOfMemoryError: GC overhead limit exceeded