$| = 1; use bigint; my %seen = (); my $carry = ""; sub a { my $n = shift; # 1, 32 if ($n==1) { $seen{1}++; return 1; } if ($n==2) { $seen{32}++; $carry = 768; return 32; } my $len = 1; while (1) { if ($seen{substr($carry, 0, $len)} or substr($carry, $len, 1) eq "0") { $len++; } else { my $a = substr($carry, 0, $len); $carry = substr($carry, $len) . ($a**3); $seen{$a}++; return $a; } die if len >= length($carry); } } foreach my $n (1..10_000) { my $a = a($n); last if $a >= 10**1000; print "$n $a\n"; }