当前位置: 首页 > article >正文

高精度除法

除数与被除数都是大整数

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
string a,b;
vector<int>dend,sor;
bool aisbigger(vector<int>&a,vector<int>&b){
	if(a.size()!=b.size())return a.size()>b.size();
	for(int i=0;i<a.size();++i){
		if(a[i]!=b[i])return a[i]>b[i];
	}
	return true;
}
vector<int> sub(vector<int>&a,vector<int>&b){
	vector<int>result=a;
	for(int i=a.size()-1,j=b.size()-1;j>=0;--i,--j){
		if(result[i]<b[j]){
			result[i-1]--;
			result[i]+=10;
	    }
		result[i]=result[i]-b[j];
	}
	while(result.size()>1&&result[0]==0)
		result.erase(result.begin());
	return result;
}
int main(){
	cin>>a>>b;
	for(int i=0;i<a.length();++i)dend.push_back(a[i]-'0');
	for(int i=0;i<b.length();++i)sor.push_back(b[i]-'0');
	vector<int>ans,r;
	for(int i=0;i<a.length();++i){
		r.push_back(dend[i]);
		int d=0;//除得的数
		while(aisbigger(r,sor)){
			r=sub(r,sor);d++;
		}
		ans.push_back(d);
	}
	while(ans.size()>1&&ans[0]==0)
		ans.erase(ans.begin());
	for(int i=0;i<ans.size();++i)
		cout<<ans[i];
	return 0;	
}


http://www.kler.cn/a/613319.html

相关文章:

  • 深入浅出SPI通信协议与STM32实战应用(W25Q128驱动)(理论部分)
  • 重试机制之指针退避策略算法
  • python三大库之--numpy(一)
  • 【已解决】Git:为什么 .gitignore 不生效?如何停止跟踪已提交文件并阻止推送?
  • 如何快速看懂并修改神经网络
  • MySQL数据库和表的操作
  • 【开源宝藏】用 JavaScript 手写一个丝滑的打字机动画效果
  • Netty——零拷贝
  • Java 大视界 -- 基于 Java 的大数据隐私计算在医疗影像数据共享中的实践探索(158)
  • 批量将多个 XPS 文档转换为 PDF 格式
  • 洛谷题单1-B2005 字符三角形-python-流程图重构
  • 安全性测试(Security Testing)
  • Manus AI 与多语言手写识别技术解析
  • 科技与人文的交融——当代科技对文化、艺术与社会伦理的深度影响
  • 提示词工程 — 科研论文笔记
  • 计算机视觉算法实战——半监督学习:技术与应用全景
  • 菜鸡前端计算机强基计划之CS50 第七课 python 入门—— Python 中文件操作专题学习
  • 配置基于接口的二层协议透明传输
  • Skynet 中 snlua 服务 init 细节
  • NX二次开发刻字功能——布尔运算