use strict; use warnings; my (@times, @dists); while (<>) { chomp; @times = split(/ +/) if s/^Time: +//; @dists = split(/ +/) if s/^Distance: +//; } my $ways = 1; for (my $race = 0; $race < scalar(@times); $race++) { my $time = $times[$race]; my $dist = $dists[$race]; my $wins = 0; for my $hold (1 .. $time - 1) { my $travel = $hold * ($time - $hold); $wins++ if $travel > $dist; } $ways *= $wins; } print $ways, "\n";