博客
关于我
C++高精度运算
阅读量:686 次
发布时间:2019-03-17

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

  1. 高精度加法
vector
add(vector
&A, vector
&B){ vector
C; int t = 0; for(int i = 0; i < A.size() || i < B.size(); i++) { if(i < A.size()) t += A[i]; if(i < B.size()) t += B[i]; C.push_back(t % 10); t /= 10; } if(t) C.push_back(1); return C;}
  1. 高精度减法
//判断A B 的大小, 保证函数里面是大的减小的bool cmp(vector
&A, vector
&B){ if(A.size() != B.size()) return A.size() > B.size(); for(int i = A.size() - 1; i >= 0; i--) if(A[i] != B[i]) return A[i] > B[i]; return true; }vector
add(vector
&A, vector
&B){ vector
C; int t = 0; for(int i = 0; i < A.size() ; i++) { t = A[i] - t; if(i < B.size()) t = t - B[i]; C.push_back((t + 10) % 10); if(t < 0) t = 1; else t = 0; } while(C.size() > 1 && C.back() == 0) C.pop_back(); return C;}

3.高精度乘低精度

vector
mul(vector
&A, int b){ vector
C; int t = 0; for(int i = 0; i < A.size(); i++){ t += b * A[i]; C.push_back(t % 10); t /= 10; } if(t) C.push_back(t); /* 如果这里b是>10的数, 就写成 while(t){ C.push_back(t % 10); t /= 10; } */ return C;}

4.高精度除低精度

A除b余rvector
div(vector
&A, int b, int &r){ vector
C; int t = 0; for(int i = A.size() - 1; i >= 0; i--){ t *= 10; t += A[i]; C.push_back(t / b); t %= b; } r = t; reverse(C.begin(), C.end()); while(C.size() > 1 && C.back() == 0) C.pop_back(); return C;}

转载地址:http://cpihz.baihongyu.com/

你可能感兴趣的文章
Node-RED中建立静态网页和动态网页内容
查看>>
Vue3+Element-ul学生管理系统(第二十二课)
查看>>
Node-RED中怎样让网站返回JSON数据
查看>>
Node-RED中根据HTML文件建立Web网站
查看>>
Node-RED中解析高德地图天气api的json数据显示天气仪表盘
查看>>
Node-RED中连接Mysql数据库并实现增删改查的操作
查看>>
Node-RED中通过node-red-ui-webcam节点实现访问摄像头并截取照片预览
查看>>
Node-RED中配置周期性执行、指定时间阶段执行、指定时间执行事件
查看>>
Node-RED安装图形化节点dashboard实现订阅mqtt主题并在仪表盘中显示温度
查看>>
Node-RED怎样导出导入流程为json文件
查看>>
Node-RED简介与Windows上安装、启动和运行示例
查看>>
Node-RED订阅MQTT主题并调试数据
查看>>
Node-RED通过npm安装的方式对应卸载
查看>>
node-request模块
查看>>
node-static 任意文件读取漏洞复现(CVE-2023-26111)
查看>>
Node.js 8 中的 util.promisify的详解
查看>>
node.js debug在webstrom工具
查看>>
Node.js Event emitter 详解( 示例代码 )
查看>>
Node.js GET、POST 请求是怎样的?
查看>>
Node.js HTTP模块详解:创建服务器、响应请求与客户端请求
查看>>