長さの同じマッチ棒が1,000本あります。
図1のようにマッチ棒で正三角形を作っていきます。 <問題1>1000本のマッチでは、何段重ねることができるでしょうか。 <問題2>また、図2のように立体に応用し、正四面体を作ってみます。
(※もちろん、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段重ねることができる。