首页 > Windows开发 > 详细

AcWing 794. 高精度除法

时间:2019-10-29 12:29:29      阅读:75      评论:0      收藏:0      [点我收藏+]

https://www.acwing.com/problem/content/796/

 

#include<bits/stdc++.h>
using namespace std; 
//   A/b   商是c  余数是r 
vector<int> div(vector<int> &A, int b,int &r)  //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);  //商 是这一位整除b 
        r%=b;   //余数 
     } 
     reverse(C.begin(),C.end()); //因为最开始push的是c的最高位,和我们前面定义的大整数存法是反过来的
     //前面定义的大整数乘法是c【0】在最低位,是反过来的。所以要reverse一遍 
     while(C.size()>1&&C.back()==0)  C.pop_back();  //商可能存在前导0 
     return C;
}
int main()
{
    string a;  //a很长,数位多     b很小,数位少 
    int b;
    cin>>a>>b;
    vector<int>A;
    for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-0);
    int r;//余数 
    auto C=div(A,b,r);
    for(int i=C.size()-1;i>=0;i--) cout<<C[i]; //输出商
    cout<<endl; 
    cout<<r<<endl;  //输出余数 
    return 0;
 } 

 

AcWing 794. 高精度除法

原文:https://www.cnblogs.com/QingyuYYYYY/p/11757291.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!