这是我遇到的一个访谈问题:查找K十进制表示的第一个数字1/N.看起来我们只需要计算10^K/N来解决问题.是否有意义 ?看起来我错过了一些东西,因为解决方案太容易了.
只需实施小学 - 学校长师:
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 / n和k是以十进制表示形式打印的位数1 / n.
请注意,通过更改value *= 10为value *= b您可以打印b-ary表示1 / n.