题目:
分数a/b化为小数后,小数点后第n位的数字是多少?
输入:
三个正整数a,b,n,相邻两个数之间用单个空格隔开。0<a<b<100,1<=n<=100000。
输出:
一个数字。
输入样例:1 2 1
输出样例:5
错误思路:先用float/double形式变量储存a/b的值,再乘10^n,结果的个位数即为所求数。
举例:1/2=0.5,10^n=10,0.5*10=5,5即为所求。
知道思路为什么错了吗?我反正想了很久哈哈
注意:n的取值范围!double类型的数据占用8个字节(64位),而float类型的数据占用4个字节(32位)。因此,要得到小数点后十万位的数字……直接算出a/b不太现实。
正确代码:用for循环,使a*(10^n)再除b,个位数即为所求。此处a,b都可作为整数类型。
#include<stdio.h>
int main()
{
int a,b;
long n;
scanf("%d %d %ld",&a,&b,&n);
for(int i=1;i<=n;i++)
{
a=a%b;//只留a/b的余数
a*=10;
}
int ans=a/b;
printf("%d",ans);
return 0;
}