博客
关于我
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.js 模块系统的原理、使用方式和一些常见的应用场景
查看>>
Node.js 的事件循环(Event Loop)详解
查看>>
node.js 简易聊天室
查看>>
Node.js 线程你理解的可能是错的
查看>>
Node.js 调用微信公众号 API 添加自定义菜单报错的解决方法
查看>>
node.js 配置首页打开页面
查看>>
node.js+react写的一个登录注册 demo测试
查看>>
Node.js中环境变量process.env详解
查看>>
Node.js之async_hooks
查看>>
Node.js也分裂了-开源社区动态
查看>>
Node.js创建第一个应用
查看>>
Node.js初体验
查看>>
Node.js升级工具n
查看>>
Node.js卸载超详细步骤(附图文讲解)
查看>>
Node.js卸载超详细步骤(附图文讲解)
查看>>
Node.js基于Express框架搭建一个简单的注册登录Web功能
查看>>
node.js学习之npm 入门 —8.《怎样创建,发布,升级你的npm,node模块》
查看>>
Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
查看>>
Node.js安装及环境配置之Windows篇
查看>>
Node.js安装和入门 - 2行代码让你能够启动一个Server
查看>>