Bash
ProjectEuler
数学

Project Euler Q31 【硬貨の和】

Project Eulerをワンライナーで解いてみる。
間違っていたらコメントください。

問題

イギリスでは硬貨はポンド£とペンスpがあり,一般的に流通している硬貨は以下の8種類である.

1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).

以下の方法で£2を作ることが可能である.

$1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p$

これらの硬貨を使って£2を作る方法は何通りあるか?

解答

seq 0 200 |
awk '{print "1 "$1}' |
awk '{for(i=0;i<=200/2;i++){v=$1*$2+2*i;if(v<=200){print v}}}' |
awk '{for(i=0;i<=200/5;i++){v=$1+5*i;if(v<=200){print v}}}' |
awk '{for(i=0;i<=200/10;i++){v=$1+10*i;if(v<=200){print v}}}' |
awk '{for(i=0;i<=200/20;i++){v=$1+20*i;if(v<=200){print v}}}' |
awk '{for(i=0;i<=200/50;i++){v=$1+50*i;if(v<=200){print v}}}' |
awk '{for(i=0;i<=200/100;i++){v=$1+100*i;if(v<=200){print v}}}' |
awk '{for(i=0;i<=200/200;i++){v=$1+200*i;if(v==200){print v}}}' |
wc -l
73682

何事もやってみる、それが大事。
まさかprint vだけでOKだとは思わなかった。

答え合わせ

こちらのサイト様と一致していればOKとした。
http://kingyojima.net/pje/031.html