C++解决:【基础】高精度整数除法

描述

求a/b的结果。 已知a,b为10^8范围内的非负整数,求a/b保留前n位小数商的结果。


输入描述

a b n

输出描述

一行数字

用例输入 1 

97 61 50

用例输出1

1.59016393442622950819672131147540983606557377049180

来源

高精度算法

AC code 方案一

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s1="\0",s3="\0";
    int b,n;
    cin>>s1>>b>>n;
    int tempB=0,tempY=0;
    for(int i=0;i<=s1.length()-1+n;i++)
    {
        if(i<=s1.length()-1) tempB=tempY*10+(s1[i]-'0');
        else tempB=tempY*10;
        char x =tempB/b+'0';
        s3=s3+x;
        tempY=tempB%b; 
    }
    int flag=0;
    for(int i=0;i<=s1.length()-1;i++)
    {
        if(flag==1) cout<<s3[i];
        if(s3[i]!='0' && flag==0)
        {
            flag=1;cout<<s3[i];
        }
    }
    cout<<".";
    for(int i=s1.length();i<=s3.length()-1;i++) cout<<s3[i];
    return 0;
}

AC CODE 方案二

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a,b,n;
	cin>>a>>b>>n;
	cout<<a/b<<"."; 
    int c=a%b;
    for(int i=1;i<=n;i++){
       	c*=10;
        cout<<c/b;
       	c%=b;
    }
    return 0;
}

收工

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值