print join(',',c(22.50,[.01,.05,.1,.25,1,5,10,20,50,100])); #### 20,1,1,0.25,0.25 #### print join(',',c(22.50,[.01,.05,.1,.20,1,2,5,10,20,50,100])); #### 20,2,0.2,0.2,0.1 #### sub c{ ($t,$p,@r)=@_;@p=map{int($_*100)}@$p; $t=int($t*100);while($v=pop@p and$t>0 ){while($t>=$v){push@r,$v/100;$t-=$v; }}@r } #### print "$t != $v\n" if ($t != $v); #### 0.1 != 0.1