问题描述
我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。
如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。
本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。
输入格式
一行三个整数:a b n,用空格分开。a是被除数,b是除数,n是所求的小数后位置(0<a,b,n<1000000000)
输出格式
一行3位数字,表示:a除以b,小数后第n位开始的3位数字。
样例输入
1 8 1
样例输出
125
样例输入
1 8 3
样例输出
500
样例输入
282866 999000 6
样例输出
914
/*1、这题运用了小学除法法则:当被除数比除数小时就向下借一位,此时商为0
,被除数乘十
2、还有一点就是判断是否为循环小数,此时我们只需要判断我们每次得到的
余数是否等于最开始的余数就行
*/
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
long long n, i, j;
long long a, b, x;
while(~scanf("%lld %lld %lld", &a, &b, &n))
{
a = a % b;
int sa = a; //直接求余数,因为最终的答案和整数部分无关
int k = 0;
while(n--)
{
if(a % b == 0) //如果此时已经除尽就可以结束循环
{
break;
}
else if(a < b)
{
a *= 10;
}
else
{
a %= b;
a *= 10;
}
k++;
if(a % b == sa) //如果是循环小数,直接省略中间的循环部分即可,节约循环时