问题描述
  我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。
  如果我们把有限小数的末尾加上无限多个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、这道题的n范围在10的九次幂以内,用double的除法无法精确到那么多位
2、自己写一个除法:
例如1 8 3
(1) 先做除法后取余1 / 8 = 0、1 % 8 = 1.这个时候我们得到的应该是整数部分的0以及余数1。
(2) 接着根据除法我们将余数乘以10,再次进行运算10 / 8 = 1、10 % 8 = 2,这个时候我们得到的应该是小数部分的1以及余数2。
(3) 继续往下做,将余数乘以10,再次进行运算20 / 8 = 2、20 % 8 = 4,这个时候我们得到的应该是小数部分的2以及余数4。
......
(4) 每次整除后的数字序列为012500000-->得出答案
每次取余后的数字序列是124000000

参考代码:

import java.io.*;
/**
 * 
 * @ProjectName:    2020-10-07JavaB
 * @Package:        test
 * @ClassName:      Main7
 * @Author:         民
 * @Description:    蓝桥试题 历届试题 小数第n位
 * @Date:            2020年10月11日下午1:54:46
 * @Version:        1.0
 */
public class Main {
    public static void main(String[] args) throws IOException{
        // TODO Auto-generated method stub
        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
        String[] values = br.readLine().split(" ");
        int n = Integer.parseInt(values[0]) ;//282866
        int m = Integer.parseInt(values[1]) ;//999000
        int t = Integer.parseInt(values[2]);//6
        for(int i=0;i<=t+2;i++) {
            int a = n / m;
            int b = n % m;
            n = b*10;
            if(i>=t) {
                System.out.print(a);
            }
        }

    }

}