「プロジェクトオイラー問100」の編集履歴(バックアップ)一覧に戻る

プロジェクトオイラー問100 - (2014/03/07 (金) 19:54:07) のソース

Problem 100 「組み合わせの確率」 †
箱の中に15個の青い円盤と6個の赤い円盤からなる21個の色のついた円盤が入っていて, 無作為に2つ取り出すとき, 青い円盤2つを取り出す確率P(BB)は

P(BB) = (15/21) × (14/20) = 1/2
であることがわかる.

無作為に2つ取り出すとき, 青い円盤2つを取り出す確率がちょうど1/2となるような次の組み合わせは, 箱が85個の青い円盤と35個の赤い円盤からなるときである.

箱の中の円盤の合計が1012 = 1,000,000,000,000を超えるような最初の組み合わせを考える. 箱の中の青い円盤の数を求めよ.

解法
なんとなく直感的に、行列演算で次に大きな数が出てくるのでは?
と考えて。
 [[a,b],[c,d]][3,1]+[e,f]=[15,6]
 [[a,b],[c,d]][15,6]+[e,f]=[85,35]
本当はもう一つ式が必要だけどこれで条件を満たすa,b,c,d,e,fを適当に試してみたらなんか解けました。
解き方が欠片も理屈だってないので何か情けない気分。



 calc(B,R):-B+R>10^12,
 	!,
  	write([b,B,r,R]).
 
 calc(B,R):-
 	B1 is B*5+2*R-2,
 	R1 is B*2+R*1-1,
 	write([B1,R1]),nl,
 	calc(B1,R1).
 
 main100:-
 	calc(3,1).