Pues ya lo he resuelto con un pequeño programa y algo de teoría que he desarrollado.
La teoría ya la describí en otro problema que me pusieron y es esta.
Dado un número racional a/b lo simplificaremos al máximo dividiendo numerador y denominador por el máximo común divisor de ellos. Luego sacaremos los factores primos del denominador simplificado y entonces:
i) Si los factores primos son solo 2 y/o 5 el numero racional es decimal exacto.
Ii) Si ni el 2 ni el 5 son factores primos del denominador simplificado y este es mayor que 1 entonces el número racional a/b es decimal periódico puro
Iii) Si hay algún factor 2 o 5 y otro que no es ninguno de los dos entonces es decimal periódico mixto.
Esto no es obligatorio saberlo, opero va a simplificar algo el programa y nunca está mal saberlo.
Entonces nosotros tenemos la división:
300200.06 / 9.909
Eso es lo mismo que el número racional
300200060 / 9909
Y la descomposición en factores primos realizada con el programa Máxima es:
30020000 = 2^2 · 5 · 127 · 118189
9909 = 3^3 · 367
NO hay factores comunes, luego no puede simplificarse.
El denominador no tiene factores 2 ni 5. Luego el número es periódico puro. Eso quiere decir que el resto que hay justo antes de sacar el primer decimal será el primero que se repita cuando se acabe el periodo. Ese resto que se repetirá es 6905
Y el cálculo del periodo se hace con un programa de ordenador que he escrito en FreePascal.
program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
const
RINI = 6905;
DIVI = 9909;
var
r,i,c: integer;
begin
i:=6905;
write('30295.');
repeat
write ((i*10) div DIVI);
i := (i*10) mod DIVI;
inc(c,1);
until i = RINI;
writeln;
writeln(c,' decimales');
readln;
end.
Y el resultado que aparece es:
30295.6968412554 2436169139 1664143707 7404379856 6959329902
1091936623 2717731355 3335351700 4743162781 3099202744
9793117368 0492481582 3998385306 2872136441 6187304470
6832172772 2272681400 7467958421 6368957513 3716823090
1200928448 8848521546 0692299929 3571500655 9693208194
5705923907 5587849429 8112826723 1809466141 8912100111
0101927540 6196387122 8176405288 1219093753 1536986577
8585124634 170955...
366 decimales
Ese es el periodo, luego vuelven a repetirse los 366 decimales 69684 ... 0955 y así indefinidamente.
Si no hubiéramos usado esa teoría que di no sabríamos seguro cuál que se iba a repetir el primer decimal y tendríamos que guardar todos los restos y comparar cada vez el resto obtenido con todos los anteriores. Eso complicaría algo el programa. Aunque en alguna otra división seguro que habrá que hacerlo.
Y eso es todo.