カステラを切り分ける

 投稿者:山中和義  投稿日:2013年 1月 5日(土)10時11分26秒
  問題
9本のカステラを10人で切り分けたい。
包丁を使う回数を、できるだけ減らすには、どのように切り分けたらよいだろうか。
ただし、いくつかのカステラをまとめて、一気に切るということはしないものとする。

答え
エジプト分数より、9/10=1/2+1/3+1/15なので、両辺に10をかけて、9=5+10/3+2/3

1本目 ┌───────┬──────┐ 5 本をそれぞれ 2 等分して、1/2 ずつ分ける
   └───────┴──────┘ これは、5回
2本目 ┌───────┬──────┐
   └───────┴──────┘
3本目 ┌───────┬──────┐
   └───────┴──────┘
4本目 ┌───────┬──────┐
   └───────┴──────┘
5本目 ┌───────┬──────┐
   └───────┴──────┘
6本目 ┌────┬────┬────┐ 10/3 本をそれぞれ 3 等分して、1/3 ずつ分ける
   └────┴────┴────┘ これは、7回
7本目 ┌────┬────┬────┐
   └────┴────┴────┘
8本目 ┌────┬────┬────┐
   └────┴────┴────┘
9本目 ┌┬┬┬┬┬┬┬┬┬┬────┐ 2/3 本を 10 等分して、1/15 ずつ分ける
   └┴┴┴┴┴┴┴┴┴┴────┘ これは、9回
よって、5+7+9=21回

同じ大きさのものを同じ個数ずつ分けることになる。
(終り)

別解
9/10=1/2+1/5+1/5 9=5+2+2なので、1*5+4*2+4*2=21回
(終り)



OPTION ARITHMETIC RATIONAL !有理数モード

LET m=9 !6 !7 !4 !2 !本数
LET n=10 !10 !8 !9 !5 !人数

LET s=0 !回数

LET x=n !save it
DO UNTIL m=0
   LET q=CEIL(n/m)
   IF x>q THEN
      LET s=s+(x-INT(x/q))
      PRINT x/q;"本をそれぞれ";q;"等分して、";
   ELSE
      LET s=s+(x-1)
      PRINT x/q;"本を";x;"等分して、";
   END IF
   PRINT "1/";STR$(q);" ずつ分ける"

   LET m=m*q-n !次へ
   LET n=n*q
LOOP

PRINT s;"回"

END

 

戻る