summaryrefslogtreecommitdiffstats
path: root/026.pl
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2009-05-17 22:22:03 -0500
committerJesse Luehrs <doy@tozt.net>2009-05-17 22:22:03 -0500
commitfada6c2c86e3c5d0673c193f028fe87879b34e14 (patch)
tree98b3fc473dd8d4be7fe72923ebd354e37dfc1283 /026.pl
parent5c032a8334949418e59981ebf059667b6c3b9df3 (diff)
downloadprojecteuler-fada6c2c86e3c5d0673c193f028fe87879b34e14.tar.gz
projecteuler-fada6c2c86e3c5d0673c193f028fe87879b34e14.zip
solution for 26
Diffstat (limited to '026.pl')
-rwxr-xr-x026.pl27
1 files changed, 27 insertions, 0 deletions
diff --git a/026.pl b/026.pl
new file mode 100755
index 0000000..9df6c5f
--- /dev/null
+++ b/026.pl
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+sub cycle_length {
+ my ($n) = @_;
+
+ my $carry = 1;
+ my $idx = 0;
+ my %seen;
+ for my $i (1..$n) {
+ $carry = ($carry * 10) % $n;
+ return $idx - $seen{$carry} if exists $seen{$carry};
+ $seen{$carry} = $idx++;
+ }
+ die "oops! ($n)";
+}
+
+my ($max, $max_idx) = (0, 0);
+for (2..1000) {
+ my $length = cycle_length($_);
+ if ($length > $max) {
+ $max = $length;
+ $max_idx = $_;
+ }
+}
+print "$max_idx\n";