(算法)蓝桥杯算法题数论

小数第n位
题目描述
我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。

如果我们把有限小数的末尾加上无限多个 0,它们就有了统一的形式。

本题的任务是:在上面的约定下,求整数除法小数点后的第

n 位开始的 3 位数。

输入描述
输入一行三个整数:


a b n,用空格分开。

a 是被除数,

b 是除数,

n 是所求的小数后位置(
0
<

,

,

<
1
0
9
09

输出描述
输出一行 3 位数字,表示:

a 除以

b,小数后第

n 位开始的 3 位数字。

输入输出样例
示例
输入

1 8 1
copy
输出

125
copy
运行限制
最大运行时间:1s
最大运行内存: 256M

错误代码:


#include
using namespace std;
int main()
{
    double a,b;
    long long n,t;
    int r1,r2,r3;
    cin>>a>>b>>n; 
    a=a/b*pow(10,n-1)*1000; 
    t=a;
    r1=t%10;
    r2=t/10%10;
    r3=t/100%10;
    cout<return 0;
}

错误问题:样例只有百分20的通过率

img

img

https://blog.csdn.net/red_red_red/article/details/89843256
https://www.codenong.com/cs106863076/

浮点数运算有误差,求精确值的只能用整数

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^