Это вопрос интервью, который я натолкнулся: найдите K
первые цифры десятичного представления 1/N
. Похоже, нам нужно просто вычислить 10^K/N
, чтобы решить эту проблему. Имеет ли это смысл ? Похоже, я чего-то не хватает, потому что решение слишком простое.Как найти K первых цифр десятичного представления 1/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();
Филиал на value == 0
должен определить, когда 1/n
имеет завершающее представление менее k
цифр.
Здесь n
знаменатель в 1/n
и k
является количество цифр для печати в десятичном представлении 1/n
.
Обратите внимание, что, изменив value *= 10
на value *= b
, вы также можете распечатать b-арное представление 1/n
.
Если это первые k цифр, не так ли есть прямолинейное умножение числителя на 10^k, и поэтому становится легче делить на N? И если нам нужен ответ, то это будет десятичное представление, то мы закончим деление результата на 10^K снова, чтобы предыдущее умножение аннулировалось.
Это тот же вопрос, который задает ОП, это не ответ. – user470379
@ user470379, у ОП был немного замешательство в его вопросе. Если ему просто нужны первые цифры K, то он очень прямолинейный, поскольку мы делаем это для удобства. –
Расчет 10^K/N может быть чрезвычайно дорогостоящим с большими K и маленькими N.
Это, вероятно, ближе к хорошему решению: long division. Так мы делили числа перед калькуляторами. :)
Очевидно, что вы должны выполнять этот алгоритм только до тех пор, пока он не даст K цифр.
- 1. Сумма последних k цифр, таких же, как сумма первых k цифр
- 2. Вырезание первых 9 цифр
- 3. Если высокий уровень первых 2 цифр
- 4. Число цифр для N ** K
- 5. округление десятичного специальное количества цифр
- 6. заменить несколько первых цифр с #
- 7. Соответствие первых цифр в R
- 8. Найти число цифр в дробной части десятичного числа в python
- 9. Как найти цифры после десятичного числа?
- 10. Подведение первых k элементов списка Python?
- 11. Приближение длины десятичного представления типа
- 12. Как запретить пользователю вводить более двух цифр после десятичного числа?
- 13. Разделение цифр из упакованного десятичного поля
- 14. Ограничение числа цифр после десятичного числа
- 15. Регулярное выражение для первых трех последовательных цифр
- 16. Извлечение цифр после десятичного числа MATLAB
- 17. Фиксированное количество цифр после десятичного знака
- 18. Получение первых трех цифр от int/float
- 19. SQL-запрос для первых цифр числового поля
- 20. Получение первых 2 цифр, введенных в EditText
- 21. Как создать случайный 16-значный номер с указанием первых цифр?
- 22. regex для десятичного значения ограничение 16 цифр
- 23. Форматирование десятичного с максимальным суммарным количеством цифр
- 24. Math.Floor до x цифр после десятичного числа
- 25. Как найти первых скрытых родителей
- 26. JS получить подстроку до первых N цифр
- 27. JavaScript круглый номер до первых двух цифр?
- 28. Сплит и проверка первых 8 цифр встречается
- 29. Как найти точную группу цифр?
- 30. Невозможно найти для k list.remove (k)
Что делать, если N равно 3? – Pointy
это не сработает, потому что 1/8 == .125. Если k == 2, то 10^2/8 = 12,5, что не помогает. Ответ, который вам нужен, - 25, верно? возможно, я вижу это неправильно? –
Последние 3? или первые 3? ... Надеюсь, вы знаете, что есть числа с представлением, которое имеет бесконечные цифры ... 1/3, 1/9 –