「今月の問題」 第14回 (平成12年11月)

長さの同じマッチ棒が1,000本あります。

図1のようにマッチ棒で正三角形を作っていきます。
例えば、1段めは3本、2段めを作る時は、9本のマッチ棒が必要です。

<問題1>1000本のマッチでは、何段重ねることができるでしょうか。

<問題2>また、図2のように立体に応用し、正四面体を作ってみます。
       1000本のマッチ棒では、何段重ねることができるでしょうか。

 

(※もちろん、1000本のマッチ棒のうち、幾本かは使わない。)     



<解答例>
***高橋 道広さんの解答*******
(1)水平なマッチは全体の1/3だから
全体は、(1+2+3+...+n)*3=3n(n+1)/2  n=25のとき975
n=26のとき 1053 より25
(2)水平面のマッチの数は、Σ3k(K+1)/2=n(n+1)(n+2)/2
4つの面があり、それぞれのマッチは2回数えられているので
マッチの総数はこの4倍の半分つまりn(n+1)(n+2)になる
n=9のとき990 n=10のとき1320より 9

***浜田 明巳さんの解答*******
 問題1においては,段数をn,最下段の三角形の数をa(n)とすると,
  a(n)=n
となります.
 このa(n)を使い,
  3Σ(1≦k≦n)a(k)≦1000<3Σ(1≦k≦n+1)a(k)
となるnを求めればよいことが分かります.
 問題2においては,さらに最下段の四面体の数をb(n)とすると,漸化式
  b(n+1)=b(n)+a(n+1),b(0)=0
が成立します.
 このb(n)を使い,
  6Σ(1≦k≦n)b(k)≦1000<6Σ(1≦k≦n+1)b(k)
となるnを求めればよいことが分かります.
 HSPはどちらかというと,ゲーム専用のソフトですが,整数計算だけでよければ,数学の問題を解くことができます.

UBASIC
   10   'asave "0011.ub"
   20   dim A(100),B(100):N=1000
   30   Wa1=0:Kotae1=0
   40   while Wa1<=N
   50    A(Kotae1+1)=Kotae1+1
   60    Wa1+=3*A(Kotae1+1)
   70    if Wa1<=N then Kotae1+=1:print Wa1;
   80   wend
   90   print "->";Kotae1
  100   Wa2=0:Kotae2=0:B(0)=0
  110   while Wa2<=N
  120    B(Kotae2+1)=B(Kotae2)+A(Kotae2+1)
  130    Wa2+=6*B(Kotae2+1)
  140    if Wa2<=N then Kotae2+=1:print Wa2;
  150   wend
  160   print "->";Kotae2:end


HSP(Hot Soup Processor)
; 0011.as
cls
mes "平成12年11月第14回"
button "問題1", *start1
button "問題2", *start2
button "終了", *ending
stop
;
*start1
n=1000
wa=0
kotae=0
*kurikaeshi1
wa=3*(kotae+1)+wa
if wa<=n : kotae+=1 : goto *kurikaeshi1
mes "問題1:"+kotae
stop
;
*start2
n=1000
a=0
b=0
wa=0
kotae=0
*kurikaeshi2
a+=1
b+=a
wa=6*b+wa
if wa<=n : kotae+=1 : goto *kurikaeshi2
mes "問題2:"+kotae
stop
;
*ending
end


***畠山さん、LIONさん 他の解答*******
<問題1の答え>

 n段目を作るのに必要な三角形の個数はn個
 したがって必要なマッチの本数は3n本
 よって
 Σ_{i=1}^{n}(3i) <= 1000  (*)
 を満たす最大のnを求めればよい。
 (*)の左辺は
 3n(n+1)/2
 である。これより(*)を満たす最大のnは25である。
 よって25段重ねることができる。

<問題2の答え>

n段目を作るのに必要な正四面体の個数はΣ_{i=1}^{n}(i)=n(n+1)/2個
したがって必要なマッチの本数は6n(n+1)/2=(3n^2+3n)本
よって
Σ_{i=1}^{n}(3n^2+3) <= 1000  (#)
を満たす最大のnを求めればよい。
(#)の左辺は
3n(n+1)(2n+1)/6+3n(n+1)/2=n(n+1)(n+2)
である。これより(#)を満たす最大のnは9である。
よって9段重ねることができる。