Fotolog
Volver a la lista de problemas
Repeating Decimals
202.c
#include <stdio.h>
int
main(void) {
int num, dem;
int i;
int array[10000];
int ini, len;
int ok;
while (1) {
i = scanf("%d %d", &num, &dem);
if (i != 2) {
break;
}
printf("%d/%d = %d.", num, dem, num/dem);
num %= dem;
for (i=0; i<10000; i++) {
num *= 10;
array[i] = num/dem;
num %= dem;
}
ok=0;
for (ini=0; ini<5000; ini++) {
for (len=1; len<5000; len++) {
ok=1;
for (i=ini+len; i<10000; i++) {
if (array[i] != array[ini+(i-ini)%len]) {
ok=0;
break;
}
}
if (ok) break;
}
if (ok) break;
}
for (i=0; i<50; i++) {
if (i==ini) {
printf("(");
}
if (i==ini+len) {
printf(")");
break;
}
printf("%d", array[i]);
}
#if DEBUG
printf("[i=%d, ini=%d, len=%d]\n", i, ini, len);
#endif
if (i==50 && ini+len >= i) {
printf("...)");
}
printf("\n %d = number of digits in repeating cycle\n\n", len);
}
return 0;
}









