- #!/usr/bin/perl
-
- sub div_1 {
- my $d = shift;
- my $n = 1;
- my $k = 0;
- my $m = 1;
- my $iter = 0;
- my %hash;
-
- my $last_digit;
-
- my ($digit, $remainder);
-
- $remainder = 1;
- while ($remainder) {
- $k = 0;
-
- while (10**$k*$n < $d) {
- $k++;
- }
-
- $m = 10**$k*$n;
-
- $last_digit = int 10**$k*$n / $d;
- $remainder = 10**$k*$n % $d;
- $digit .= ('0' x $k) . $last_digit;
-
- if (defined $hash{"$last_digit $remainder"}) {
- return $iter - $hash{"$last_digit $remainder"};
- }
- else {
- $hash{"$last_digit $remainder"} = $iter;
- }
-
- $n = 10**$k*$n - $last_digit*$d;
- $n *= 10;
- $iter++;
- }
-
- return 0;
- }
- my ($largest, $length, $d);
- $largest = 0;
-
- for (2..1000) {
- $length = div_1($_);
- if ($largest < $length) {
- $largest = $length;
- $d = $_;
-
- }
- }
-
- print "1/$d with length=$largest";
- #print $d, '!!';