-
高精度除法
2020-07-06 12:50:45高精度除法 模板(高精度除以低精度 —— 模板题 AcWing 794. 高精度除法) vector<int> div(vector<int> &a,int b,int& r){ vector<int> c; r=0; for(int i=a.size()-1;i>=0;i--){ ...大雪菜的课(笔记)
基础算法(二)
1.高精度
(1).高精度除法
模板(高精度除以低精度 —— 模板题 AcWing 794. 高精度除法)
vector<int> div(vector<int> &a,int b,int& r){ vector<int> c; r=0; for(int i=a.size()-1;i>=0;i--){ r=r*10+a[i]; c.push_back(r/b); r%=b; } reverse(c.begin(),c.end()); while(c.size()>1&&c.back()==0) c.pop_back(); return c; }
AcWing794. 高精度除法
给定两个非负整数A,B,请你计算 A / B的商和余数。
输入格式
共两行,第一行包含整数A,第二行包含整数B。输出格式
共两行,第一行输出所求的商,第二行输出所求余数。数据范围
1≤A的长度≤100000,
1≤B≤10000
B 一定不为0输入样例:
7
2
输出样例:
3
1#include <iostream> #include <algorithm> #include <vector> using namespace std; vector<int> div(vector<int> a,int b,int &r){ vector<int> c; for(int i=a.size()-1;i>=0;i--){ r=r*10+a[i]; c.push_back(r/b); r%=b; } reverse(c.begin(),c.end()); while(c.size()>1&&c.back()==0) c.pop_back(); return c; } int main() { string s; int b,r=0; cin>>s>>b; vector<int> a; for(int i=s.size()-1;i>=0;i--) a.push_back(s[i]-'0'); auto c=div(a,b,r); for(int i=c.size()-1;i>=0;i--) cout<<c[i]; printf("\n%d",r); return 0; }
收藏数
1,272
精华内容
508