過去ログ

uchinyan
あまり賢い方法ではありませんが、正直に、赤色の生物及び青色の生物が一匹ずついる場合から分裂させて、
赤色が 2005 匹、青色が 1019 匹になるのをチェックするプログラムを組んでみました。
あ、今、下を見たら、kasamaさんとアルゴリズムは全く同じですね ^^;

REM 算数にチャレンジ473回
REM 赤色の生物の数を r 匹
REM 青色の生物の数を b 匹

SUB check(r,b,t)
 IF (r <= 2005) AND (b <= 2005) THEN
  LET c = c + 1
  IF (r = 2005) AND (b = 1019) THEN
   PRINT "赤色が2005匹,青色が1019匹の場合:";t;"秒後"
  END IF
  CALL check(r+b,b,t+1)
  CALL check(r,r+b,t+1)
 END IF
END SUB

LET c = -1
CALL check(1,1,0)
PRINT "両方の生物が 2005 匹以下の分裂パターンの総数:";c;"通り"
END

結果は、
赤色が2005匹,青色が1019匹の場合: 42 秒後
両方の生物が 2005 匹以下の分裂パターンの総数: 2445610 通り
です。
最初から真面目に調べると、2445610 通り、もの場合を調べることになり、大変です...(^^;
ネコの住む家   10月20日(木) 11:16:39   MAIL:uchi@sco.bekkoame.ne.jp   26006

過去問題一覧へ戻る