use strict; use warnings; my @coins = (100, 25, 1); my($in, $tgt) = (0, 0); for(0..2){ $in = ; chomp $in; $tgt += ($in*$coins[$_]); } if(length $tgt > 3){ $tgt = substr($tgt, -3, 3)+0; } my %f = (0 => 0); my %n_f = %f; my $val = 0; my $quo = 0; while(!defined($f{$tgt})){ for my $i (keys %f){ for my $j (@coins){ $val = $i+$j; $quo = $f{$i}+1; if(!defined($n_f{$val})){ $n_f{$val} = $quo; }else{ if($quo < $n_f{$val}){ $n_f{$val} = $quo; } } } } %f = %n_f; } print $f{$tgt};