Number Rotations

Author: Shlomi Fish

https://projecteuler.net/problem=168

Consider the number 142857. We can right-rotate this number by moving the last digit (7) to the front of it, giving us 714285. It can be verified that 714285=5×142857. This demonstrates an unusual property of 142857: it is a divisor of its right-rotation.

Find the last 5 digits of the sum of all integers n, 10 < n < 10^100, that have this property.

Source code: prob168-shlomif.pl

use v6;

sub MAIN(Bool :$verbose = False) {
    my $sum = 0;
    # $multiplier is "d"
    for 1 .. 9 -> $multiplier {
        for 1 .. 99 -> $L {
            # $digit is m.
            for 1 .. 9 -> $digit {
                my $n = (((10 ** $L - $multiplier)*$digit)/(10*$multiplier - 1));

                my $number_to_check = $n * 10 + $digit;
                if ($n.chars() == $L and ($multiplier * $number_to_check
                        == $n + $digit * 10 ** $L)) {
                    print "Found $number_to_check\n" if $verbose;
                    $sum += $number_to_check;
                    print "Sum = $sum\n" if $verbose;
                }
            }
        }
    }

    if $verbose {
        say "Last 5 digits of the final sum are: ", "$sum".substr(*-5);
    }
    else {
        say "$sum".substr(*-5);
    }
}