博客
关于我
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/

你可能感兴趣的文章
M_Map工具箱简介及地理图形绘制
查看>>
m_Orchestrate learning system---二十二、html代码如何变的容易
查看>>
n = 3 , while n , continue
查看>>
n 叉树后序遍历转换为链表问题的深入探讨
查看>>
N-Gram的基本原理
查看>>
nacos config
查看>>
Nacos 与 Eureka、Zookeeper 和 Consul 等其他注册中心的区别
查看>>
Nacos2.X 配置中心源码分析:客户端如何拉取配置、服务端配置发布客户端监听机制
查看>>
NacosClient客户端搭建,微服务注册进nacos
查看>>
Nacos做注册中心使用
查看>>
Nacos原理
查看>>
Nacos发布0.5.0版本,轻松玩转动态 DNS 服务
查看>>
Nacos启动异常
查看>>
Nacos和Zookeeper对比
查看>>
Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
查看>>
Nacos如何实现Raft算法与Raft协议原理详解
查看>>
Nacos安装教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
Nacos实战攻略:从入门到精通,全面掌握服务治理与配置管理!(下)
查看>>
Nacos心跳机制实现快速上下线
查看>>
Nacos服务注册与发现demo
查看>>