题解 B2073 【求小数的某一位】
题目描述
分数 化为小数后,小数点后第 位的数字是多少?
分析
回一下小学时求 小数点后第三位的竖式计算:
记小数点后第 位为 ,第 位的余数为 。此例中 。
可以发现,结果的每一位都是由前一位所得的余数乘以 除以 取整得到的,即 ,于是,我们只需要记录前 位的余数,乘以 再除以 取整就可以得到小数点后第 位。
计算第 位的余数时,我们只需要像竖式中的过程一样,把上一位的余数乘以 ,再对 取模就是第 位的余数,即 。
然而,这题数据一开始是错的,现在题面改了,所以我们要特判 的情况,此时输出 。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,n;
cin>>a>>b>>n;
if(a==b){
cout<<0;
return 0;
}
for(int i=1;i<n;i++)
a=a*10%b;//我在这里把a和r合起来用
cout<<a*10/b;
return 0;
}

浙公网安备 33010602011771号