平成12年6月21日
[流れ星]第54回
数学的な応募問題<解答募集期間:6月18日〜7月2日>
[デジタル時計]
太郎さんの机には、デジタル時計が置いてあり、一日を、00:00〜23:59というように表示します。
このデジタル時計の表示に数字nが現れている時間を、太郎さんは気にしています。
ここで、4つの数字からなる表示の中の少なくとも1つがnであるときの時間の総和を求めたいのです。
例えば、22:00 という表示の場合は n=0が1分、n=2が1分と数えて下さい。
さて、問題です。
問題1:n=0〜9までの数字で一番表示時間の長い数字とその表示時間の総和を教えてください。
問題2:n=0〜9までの数字で一番表示時間の短い数字とその表示時間の総和を教えてください。
問題3:上の2つの問題以外で、現れてくる数字の表示時間の総和も教えてください。
<「浜田明巳」さん>からの解答、6/20 8時14分受信 6/21 更新
今回はエクセルのマクロの他に,覚えたての秀丸のマクロでもプログラムを作ってみました.結果は以下の通り.
0->900min
1->900min
2->630min
3->495min
4->450min
5->450min
6->252min
7->252min
8->252min
9->252min
つまり,一番長く表示されるのは0と1の900分で,一番短く表示されるのは6〜9の252分でした.
最初は0が一番長いのでは,と思っていたのですが,1も結構長いようです.短いのは予想通りの6〜9.分の十の位が5までである事がひびいているのですね.
エクセルのマクロ
Option Explicit
Sub digital()
Columns("A:K").Select
Selection.Delete Shift:=xlToLeft
Dim d(4) As Integer
Dim kosuu As Integer
Dim j As Integer
kosuu = 0
d(1) = 0
While d(1) <= 2
d(2) = 0
While d(2) <= -9 * (d(1) < 2) - 3 * (d(1) = 2)
d(3) = 0
While d(3) <= 5
d(4) = 0
While d(4) <= 9
kosuu = kosuu + 1
Range("A" & kosuu).Select
Cells(kosuu, 1).Value = Str(d(1)) + Str(d(2)) + ":" + Str(d(3)) + Str(d(4))
For j = 1 To 4
Cells(kosuu, d(j) + 2).Value = 1
Next j
d(4) = d(4) + 1
Wend
d(3) = d(3) + 1
Wend
d(2) = d(2) + 1
Wend
d(1) = d(1) + 1
Wend
For j = 0 To 9
Cells(kosuu + 1, j + 2).Value = "=SUM(R[-" & kosuu & "]C:R[-1]C)"
Cells(kosuu + 2, j + 2).Value = j
Next j
End Sub
秀丸のマクロ
//degital
#j=0;
while(#j<=9){
#kosuu[#j]=0;
#j=#j+1;
}
#d[1]=0;
while(#d[1]<=2){
if(#d[1]<2){
#d2_max=9;
}
else{
#d2_max=3;
}
#d[2]=0;
while(#d[2]<=#d2_max){
insert str(#d[1])+str(#d[2])+":00 ";
#d[3]=0;
while(#d[3]<=5){
#d[4]=0;
while(#d[4]<=9){
#j=0;
while(#j<=9){
#aru[#j]=0;
#j=#j+1;
}
#j=1;
while(#j<=4){
#aru[#d[#j]]=1;
#j=#j+1;
}
#j=0;
while(#j<=9){
#kosuu[#j]=#kosuu[#j]+#aru[#j];
#j=#j+1;
}
#d[4]=#d[4]+1;
}
#d[3]=#d[3]+1;
}
#d[2]=#d[2]+1;
}
#d[1]=#d[1]+1;
}
insert "\n";
#j=0;
while(#j<=9){
insert str(#j)+"->"+str(#kosuu[#j])+"min\n";
#j=#j+1;
}
endmacro;
<自宅>
mizuryu@aqua.ocn.ne.jp最初のページへもどる