【高精度】高精度数除以低精度数I

问题 G: 【高精度】高精度数除以低精度数I

时间限制: 1 Sec  内存限制: 512 MB
提交: 173  解决: 71
[提交] [状态] [讨论版] [命题人:]

题目描述

修罗王聚集了庞大的暗元素以施展隐匿魔法,该魔法施展后将对其周边的时空产生隐匿效果,当然,隐匿的效果好坏取决于是否将暗元素平均地分配在其周边时空,显然这涉及高精度除法的编程。考虑到邪狼的理解能力,修罗王不得不先将问题简化为:输入一被除数(位数≤5000),输入一除数(整型数据范围内),输出整数商,忽略小数。

输入

共两行,第1行为一个数字字符串,即被除数,第2行为一个整数,即除数。

输出

输出整数商,忽略小数。

样例输入

20
5

样例输出

4

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string Multiply(string s,int x){  
    reverse(s.begin(),s.end());  
    int cmp=0;  
    for(int i=0;i<s.size();i++){  
        cmp=(s[i]-'0')*x+cmp;  
        s[i]=(cmp%10+'0');
        cmp/=10;  
    }  
    while(cmp){  
        s+=(cmp%10+'0');  
        cmp/=10;  
    }  
    reverse(s.begin(),s.end());  
    return s;  
}
string Except(string s,int x){
    int cmp=0,ok=0;
    string ans="";
    for(int i=0;i<s.size();i++){
        cmp=(cmp*10+s[i]-'0');
        if(cmp>=x){
            ok=1;
            ans+=(cmp/x+'0');
            cmp%=x;
        }
        else if(ok==1)ans+='0';
    }
    return ans.empty()?"0":ans;
}
int main(int argc, char *argv[]) {
    string a;
    int b;
    cin>>a>>b;
    cout<<Except(a,b)<<endl;
}
View Code
原文地址:https://www.cnblogs.com/Rhythm-/p/9348895.html