paizaのスキルチェックでは使えないbashで書いておくのは怒られないでしょ・・・ たぶん
素直に全部ばらして書くとこんな感じだと思う
#!/bin/bash read X N=0 while true do if [ $((500 * N)) -gt $X ]; then break fi N=$((N+1)) done N=$((N-1)) X=$((X-500*N)) M=0 while true do if [ $((100 * M)) -gt $X ]; then break fi M=$((M+1)) done M=$((M-1)) X=$((X-100*M)) L=0 while true do if [ $((50 * L)) -gt $X ]; then break fi L=$((L+1)) done L=$((L-1)) X=$((X-50*L)) K=0 while true do if [ $((10 * K)) -gt $X ]; then break fi K=$((K+1)) done K=$((K-1)) X=$((X-10*K)) J=0 while true do if [ $((5 * J)) -gt $X ]; then break fi J=$((J+1)) done J=$((J-1)) X=$((X-5*J)) I=0 while true do if [ $((1 * I)) -gt $X ]; then break fi I=$((I+1)) done I=$((I-1)) X=$((X-1*I)) echo "500en $N mai 100en $M mai 50en $N mai 10en $L mai 5 en $J mai 1 en $I mai " echo $((N+M+L+K+J+I))
たとえば、いっぱい出てくる
N=0 while true do if [ $((500 * N)) -gt $X ]; then break fi N=$((N+1)) done N=$((N-1)) X=$((X-500*N))
とかは関数とかでまとめられると思うし、500円100円で分かれてるだけなのでここを変数にしてforにでもしたほうが素直な感じもします。
てか剰余使えってことだろうな・・・
#!/bin/bash read X KOUKA="500 100 50 10 5 1 " for YEN in $(echo $KOUKA) do GOKEI=$((X/YEN+GOKEI)) echo "$YEN -> $((X/YEN)) mai" X=$((X%YEN)) done echo $GOKEI
たぶんこういう風にするのが正解なんだろうね