高精度算法--入门
来源:互联网 发布:狼人杀 官方唯一 知乎 编辑:程序博客网 时间:2024/06/01 08:00
高精度算法是基础算法中比较实用的算法之一,它主要应用于大数之间的运算。
(主要是在超过
高精度是利用字符来存一串 或者 利用一个数组来存一个数字。
~其实像小学数学一样列一个竖式就能看懂了。。。
结构体:
struct node{ int a[10000],len;//len来记录数字的长度,a是记录具体的每一个数字};
1.高精度的加法和减法:
加减法是利用每一个相同位相加或相减,首先找到最长的那一串,用较短的那一串来进行操作。
node jia(node x,node y){ if(x.len>y.len)swap(x,y);//找出短的 for(int i=1;i<=x.len;i++) { y.a[i]+=x.a[i]; if(y.a[i]>=10) { if(i==y.len)y.len++;//如果超出原来的长度 y.a[i+1]++;//10进制的性质 y.a[i]-=10; } } return y;}
2.高精度的乘法:
乘法相对来说较难,但是还是很简单~
乘法也是向小学数学那样列出了竖式。
而进位却是有点复杂。
node mult(node x,node n){ bigint y; y.len=x.len; for(int i=1;i<=x.len;i++) { y.a[i]+=x.a[i]*n; int k=i; while(y.a[k]>=10)//可能不止1进位 { y.a[k+1]+=y.a[k]/10; y.a[k]%=10; k++; y.len=max(y.len,k);//也可能长度增加 } } return y;}
除法嘛。。。
不想写了。。
3.输出
简单啊!
void putout(node a){ for(int i=a.len;i>=1;i--) printf("%d",a.a[i]); puts("");}
The end~~~~~~~~~~~~~~~~~
1 0
- 高精度算法--入门
- 【算法入门经典】 高精度部分总结
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- 高精度算法
- lua中文参考手册
- C++虚函数表解析
- find文件查找
- 如何限制IP,通过SSH登陆linux服务器
- Hadoop(03) 启动HDFS异常
- 高精度算法--入门
- C++使用md5加密
- map的详细用法
- UVA(1152)
- 文章来源:VRAR123网址导航_NEWS 瑞典Gleechi 企业里智能VR专家正在研究一个系统,这个系统主要是增强VR游戏的人机互动开发;也就是说游戏玩家可以通过平台提供的实时页面,通过自
- java绘图 -- The DOT Language
- 程序中的反单引号“ ` ”
- [CORS:跨域资源共享] 通过扩展让ASP.NET Web API支持W3C的CORS规范
- 第一次在CSDN写博客