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;
}
相关推荐
起个名字费劲死了7 分钟前
基于灰度/形状的2D模板匹配
算法
杜 硕12 分钟前
归并排序详解
数据结构·算法·排序算法
科技观察哨21 分钟前
国产纳米定位平台与精密位移台量产能力图谱(2026):Z轴压电、XYθZ、六自由度并联与光刻/检测/装配选型指南
网络·人工智能·算法
蒸蒸yyyyzwd24 分钟前
秋招学习笔记 Day 64 之准备系统软件开发工程师岗位笔记
c++·八股
奇树谦26 分钟前
LRU 缓存原理与 C++ 实践示例
开发语言·c++·缓存
多弗朗皮卡丘1 小时前
C++ 红黑树
开发语言·c++·红黑树
鶴哥只手遮天1 小时前
《OpenFOAM 源码深度剖析》系列-第 3 章 字典系统、IO 体系与对象注册表
算法·开源
鶴哥只手遮天1 小时前
《OpenFOAM 源码深度剖析》系列-第 2 章 wmake:OpenFOAM 自研构建系统与编译配置体系
算法·开源
用户81849100742161 小时前
我把工位上的“AI牛马”养成了:一个技术人的 AiPy 实战手记
算法
Tisfy2 小时前
LeetCode 3727.最大交替平方和:排序 (双指针可选)
算法·leetcode·题解·贪心·数组·排序