Есть ли алгоритм для выяснения следующих вещей?
- Если результатом деления является повторяющееся десятичное число (в двоичном формате).
- Если оно повторяется, то с какой цифры (представленной в виде степени двойки) начинается повторение?
- Какие цифры повторяются?
Некоторые примеры:
1/2 = 1/10 = 0.1 // 1 = false, 2 = N/A, 3 = N/A, 4 = N/A
1/3 = 1/11 = 0.010101... // 1 = true, 2 = -2, 3 = 10
2/3 = 10/11 = 0.101010... // 1 = true, 2 = -1, 3 = 10
4/3 = 100/11 = 1.010101... // 1 = true, 2 = 0, 3 = 10
1/5 = 1/101 = 0.001100110011... // 1 = true, 2 = -3, 3 = 1100
Есть ли способ сделать это? Эффективность вызывает большие опасения. Описание алгоритма предпочтительнее кода, но я приму тот ответ, который смогу получить.
Также стоит отметить, что база не имеет большого значения; Я могу преобразовать алгоритм в двоичный (или, если он находится, скажем, в базе 256, чтобы использовать char
s для простоты, я мог бы просто использовать это). Я говорю это, потому что, если вы объясняете, вам может быть проще объяснить в базе 10 :).