6441. 特别的除法

输入正整数 a,b,c,输出 a/b 小数形式,精确到小数点后 c 位。

输入格式

共一行,包含三个整数 a,b,c。

输出格式

一个实数,表示结果。

数据范围

1≤a,b≤108,

2≤c≤1000

输入样例:
复制代码
2 3 6
输出样例:
复制代码
0.666667

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
int main()
{

    //不能直接用double+printf,double精度不够
//    double a,b,c;
//    cin>>a>>b>>c;
//    double ans=a/b;
//    printf("%.8f\n",ans);
//    int c=8;printf("%.*f",c,ans);//同上效果
//    printf("%8d",123);//占8位右对齐
//    printf("%-8d",123);//左对齐
//    printf("%10.2f",3.14);//10位,小数点后两位


    ll a,b,c;
    cin>>a>>b>>c;
    ll ans1=a/b;
    ll r=a%b;//像列竖式一样余数*10再÷不断往后算小数点后位数
    string s;

    for(int i=0;i<=c;i++)
    {
        r*=10;
        s+=char(r/b+48);//一位一位往后算。char()是按ASCII码转换的。char(48)是'0'。
        r%=b;
    }

    //四舍五入
    if(s[c]>='5')
    {
        int i=c-1;
        while(i>=0&&s[i]=='9')
        {
            s[i]='0';
            i--;
        }
        if(i>=0) s[i]++;//算是可以用ASCII码来理解吧
        else ans1++;
    }

    cout<<ans1<<".";
    for(int i=0;i<c;i++)
        cout<<s[i];
    cout<<endl;

    return 0;
}
相关推荐
华华哥202217 分钟前
《模型不玄学》第5章 看懂你的数据:先认字段,再过门禁
算法
国科安芯20 分钟前
低轨卫星姿轨控系统中抗辐射MCU的选型依据与工程实践
单片机·嵌入式硬件·算法·架构·系统安全·低轨卫星·抗辐射
高亦真26 分钟前
今天是学习嵌入式的第33天
linux·学习·算法
OPEN-F26 分钟前
C++17新特性精讲:结构化绑定、if constexpr与实用类型
开发语言·c++
CoderYanger27 分钟前
A.每日一题:3345. 最小可整除数位乘积 I
java·数据结构·程序人生·算法·leetcode·面试·学习方法
带多刺的玫瑰28 分钟前
Leecode#16刷题之最接近的三数之和
数据结构·算法
OPEN-F30 分钟前
C++并发编程:线程与互斥锁
开发语言·c++
码匠许师傅32 分钟前
【设计模式精讲】11.桥接模式(Bridge)
c++·设计模式·桥接模式·uml
Yfhonier35 分钟前
岛屿数量(DFS)
算法·深度优先