如何找到1/N的十进制表示的K个第一个数字

Mic*_*ael 6 algorithm math

这是我遇到的一个访谈问题:查找K十进制表示的第一个数字1/N.看起来我们只需要计算10^K/N来解决问题.是否有意义 ?看起来我错过了一些东西,因为解决方案太容易了.

jas*_*son 6

只需实施小学 - 学校长师:

int value = 1;
bool outputDecimalSeparator = false;
int digitsOutput = 1;
while(digitsOutput <= k) {
    if (value == 0) {
        Console.Write(0);
    }
    else {
        if (value < n) {
            Console.Write(0);
            value *= 10;
        }
        else {
            Console.Write(value / n);  
            value %= n;
        }
   }
   if (outputDecimalSeparator == false) {
       outputDecimalSeparator = true;
       Console.Write('.');
   }
   digitsOutput++;
}
Console.WriteLine();
Run Code Online (Sandbox Code Playgroud)

分支on value == 0用于检测何时1 / n具有小于k数字的终止表示.

这里n是分母in 1 / nk是以十进制表示形式打印的位数1 / n.

请注意,通过更改value *= 10value *= b您可以打印b-ary表示1 / n.