洛谷P1480 A/B Problem

4.高精度除以低精度

题目叙述:

A/B Problem

题目描述

输入两个整数 a,b,输出它们的商。

输入格式

两行,第一行是被除数,第二行是除数。

输出格式

一行,商的整数部分。

样例 #1

样例输入 #1

10
2

样例输出 #1

5

提示

0a1050001b109

代码

本题为高精度除以低精度的模板,我们可以使用vector数组来模拟这个过程

#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
vector<int> a, c;
int b;
void div(vector<int>& a, int b, vector<int>& c) {
long long r = 0;
for (int i = a.size()-1; i >= 0; i--) {
r = r * 10 + a[i]; //计算被除数
c.push_back(r / b); //存商
r %= b; //存余数
}
//将c先翻转过来,方便去除前导零,我们现在翻转以后,去除末尾的所有0即可,然后再从低位到高位输出就可以了
reverse(c.begin(), c.end());
while (c.size() > 1 && c.back() == 0) c.pop_back();
}
int main()
{
string s;
cin >> s >> b;
// 从低位到高位给vector数组赋值
for (int i = s.size() - 1; i >= 0; i--) a.push_back(s[i] - '0');
//调用div函数
div(a, b, c);
//从低位到高位输出c即可
for (int i = c.size() - 1; i >= 0; i--) cout << c[i];
return 0;
}

代码的工作原理和实现过程

posted @   Tomorrowland_D  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示