横浜へなちょこ勉強会#3に行ってきました
第3回「プログラマの数学読書会」にいってきました
数学的帰納法の問題
5人で飲食費10000円を払いました。
ただし、払った金額はそれぞれ200円ずつ違います。
それぞれの払った額を求めなさい。
1人目:****円 ↓+200円 2人目:****円 ↓+200円 3人目:****円 ↓+200円 4人目:****円 ↓+200円 5人目:****円 ――――――― 合計1000円
解答
1人目:1600円
2人目:1800円
3人目:2000円
4人目:2200円
5人目:2400円
解説
1人目を初項「a」とする
1人目の代金をa1、2人目をa2・・・a5とする
差額200円を交差「d」とする
人数5人を「n」とする
合計金額10000円を「S」とする
a(1) = a + d * 0 a(2) = a + d * 1 a(3) = a + d * 2 a(4) = a + d * 3 a(5) = a + d * 4 S = a1 + a2 + a3 + a4 + a5
となり、等差数列の合計を求めればよい。
また、
d * □ に 人数-1 という法則性が見つかる
これを以下のように置き換える
順番を「n」する
a(n) = a + d * ( n - 1 ) ↓ a(n) = a + ( n - 1 ) d
ここでガウスの等差数列の考え方を使う
S = a(1) + a(2) + a(3) + a(4) + a(5) S = a(5) + a(4) + a(3) + a(2) + a(1) 2S = ( a(1) + a(5) ) * 5
これを一般的にすると
S = a(1) + a(2) + a(3) + a(4) + a(5) ・・・ + a(n-4) + a(n-3) + a(n-2) + a(n-1) + a(n) S = a(n) + a(n-1) + a(n-2) + a(n-3) + a(n-4) ・・・ + a(5) + a(4) + a(3) + a(2) + a(1) 2S = ( a(1) + a(n) ) * n
「 a(n) = a + ( n - 1 ) d 」に置き換える
S = { a+(1-1)d } + { a+(2-1)d } + { a+(3-1)d } + { a+(4-1)d } + { a+(5-1)d } S = { a+(5-1)d } + { a+(4-1)d } + { a+(3-1)d } + { a+(2-1)d } + { a+(1-1)d } 2S = ( { a+(1-1)d } + a+(5-1)d ) * 5
以下の変更を加え一般的にする
- a1 = a
- 人数5をnであらわす
- {}は無意味なので除く
2S = ( a + a + ( n - 1 ) d ) * n ↓ S = { 2a + ( n - 1 )d } * n / 2 S = n{ 2a + ( n - 1 )d } / 2