◆兵庫県 sinapusu さんからの解答
【問題1】
一番有望なのは 0時なので
0:xx:x0
これを小さい方から当てはめていくと
0:0x:00
答え 0:01:00となる
【問題2】
一番最後は 23時で
23:xx:32となり
条件を満たすのは55なので
答え 23:55:32
【問題3】
コードで力ずくで求めた結果
9:59:59〜10:00:01の間の2秒
答え 9:59:59〜10:00:01
【問題4】
一番有力なのは時刻でそれに注目すると
一番長いのはxx時の反転を秒に出来ない15時から20時の間
15時の最後は15:xx:51なので15:55:51
20時の最初は20:xx:02なので 20:00:02
答え 15:55:51〜20:00:02
【問題5】
Option Explicit Dim dates() As Variant Dim wsDates As Worksheet Sub a() Dim d As Date Dim s As String Dim i As Long Dim j As Long d = "00:00:00" Set wsDates = Worksheets.Add For i = 0 To 86399 s = Format(d, "hmmss") If s = StrReverse(s) Then j = j + 1 wsDates.Cells(j, 1) = d DoEvents End If d = DateAdd("s", 1, d) Next End Sub Function Search_Max() Dim Max As Double Dim i As Long Dim j As Long Dim temp As Double Dim HANNITI As Double HANNITI = 0.5 For i = 1 To 660 For j = i To 660 temp = Abs(dates(i, 1) - dates(j, 1)) If (temp - HANNITI) > 0 Then temp = temp - HANNITI End If If temp > Max Then Max = temp End If Next Next Search_Max = Max End Function Sub Main() Dim m As Double Dim temp As Double Dim ws As Worksheet Dim i As Long Dim j As Long Dim k As Long Call a wsDates.Range("a1:a660").NumberFormatLocal = "h""時""mm""分""ss""秒""" dates = wsDates.Range("a1:a660") Set ws = Worksheets.Add m = Search_Max For i = 1 To 660 For j = i To 660 temp = Abs(dates(i, 1) - dates(j, 1)) If temp = m Then k = k + 1 ws.Cells(k, 1) = dates(i, 1) ws.Cells(k, 2) = dates(j, 1) End If Next Next ws.Range("a1:b" & k).NumberFormatLocal = "h""時""mm""分""ss""秒""" ws.Name = "問5の答え" wsDates.Name = "P時刻一覧" End Sub答え 1時33分31秒 13時33分31秒
【おまけの組合せ数 】
まず時刻の長さが5の時、右端は 0〜9なので
2つ目は 0〜5までの6通り
真ん中は 0〜9なので
よって 10*6*10 600通り
時刻の長さが6になった場合
右2桁は10〜23までの
10 "01
11 11
12 21
13 31
14 41
51 15
20 2
21 12
22 22
23 32
10通り
真ん中二桁は ぞろ目だけなので 00か11の倍数となる
6通り
10*6 60
答え 計660通り
◆愛知県 Y.M.Ojisan さんからの解答
【問題1】
0:01:00
【問題2】
23:55:32
【問題3】
9:59:59と10:00:01 (2秒)
5桁の時刻間では最少11秒、6桁の時刻間では5分以上離れていることは分かる。
残り、5桁―6桁間の時刻差である、(23:55:32と0:00:0) と 解答を検討した結果、解が得られた。
【問題4】
15:55:51と20:00:02 (4時間4分11秒)
おまけに示す検討から、時間台で最もはなれているのは15時と20時台間であることが分かる。
【問題5】
1:33:31 と 13:33:31 (12時間)
(12時間差に最も近いのを見つける問題と解釈した。でないと何日間にも渡れるか、0:00:00と23:55:32になるから。)
【おまけ】
660
5ケタ台は A:BC:BA であり A、Cは0〜9 10個ずつ 、Bは0〜5の6個 、が自由に組み合わせ可能で600個ある。
6ケタ台は AB:CC:BA であり ABは 10〜15 と 20〜23 の10個、Cは0〜5の6個、が自由に組み合わせ可能で60個ある。
よって合計660個
◆京都府 突貫小路三丁目 さんからの解答
0時台から9時台までは5桁ですが、a:bc:baという形から1分あたり1回しかP時刻が存在しないことを考えると、一時間当たり最大60回までしかP時刻は存在しないことになります。
これを念頭に置くと、0時台には、
0:00:00
0:01:00
0:02:00
…
0:09:00
0:10:10
0:11:10
…
0:19:10
0:20:20
…
0:29:20
0:30:30
…
0:39:30
…
…
0:59:50
の計60回P時刻があり、これ以上はありません。
1時台〜9時台も
1:xx:x1
2:xx:x2
…
9:xx:x9
となるだけで、各々0時台と同数あります。
10時台からは6桁になるので分の数字がぞろ目になることが必要条件になるから、10時台には
10:00:01
10:11:01
…
10:55:01
の6回しかありません。
11時台から15時台までも
11:xx:11
…
15:xx:51
となり、各々6回あります。
16時台から19時台までは
16:xx:61
…
19:xx:91
となり、P時刻は存在しません。
20時台から23時台までは10時台と同様で、
20:xx:02
…
23:xx:32
となり、各々6回あります。
これ以上は存在の可能性は無いので、すべて数え上げたことになります。
これを用いると
【問題1】
0:00:00の次は0:01:00です。
【問題2】
一日の最後は23:55:32です。
【問題3】
一番近いのは、9:59:59と10:00:01で、その差は2秒です。
他にはありません。
(1秒差の時刻が無いことの証明)
時刻表示が6桁の間は、分の数字がぞろ目になること、1分あた
り1回しかP時刻が存在しないことからありえません。
時刻表示が5桁の間に1秒差のP時刻があったとし、
先のほうをx:yz:yxとすると
i)0≦x≦8のとき、あとの方のP時刻は秒数の1の位が(x+1)です。
ところが、この1秒の間に時数は変化しないはずですから
、片方はP時刻ではないことになります。
ii)x=9のとき、先の方のP時刻は9:yz:y9となりますが、このときあとの方のP時刻は秒数の1の位が0となります。
これがP時刻であるためには0時でなければなりませんが、9時台の1秒後に0時になることはありません。
上の2項目より、2つのP時刻が1秒差になることはありません。
(一意性の証明)
時刻表示が6桁同士の時は、上の証明と同様で2秒差になることはありえません。
時刻表示が5桁同士の時、
i)同じ時数のとき、分数の10の位が同じ時には各々が1分差、10の位が変わる時には1分10秒差になっています。
ii)時数が変わるとき、1分11秒差になっています。
このことから、5桁同士でもありえません。
6桁から5桁に変わるときは、23:55:32〜0:00:00であり、4分28秒差です。
よって、5桁から6桁に変わるとき、9:59:59と10:00:01の2秒差がいちばん短いことになります。
【問題4】
16時台から19時台にはP時刻が存在しないので、この空白を含むのが一番長いです。
すなわち、途中にP時刻がないような一番はなれた2つのP時刻は、
15:55:51と20:00:02です。
【問題5】
午前と午後で分・秒数ができるだけ近いものを選べばよいから、
1:33:31と13:33:31が12時間差で一番長いです。
12時間より長い差を取ることは出来ませんし、他にはこうなるものはありません。
(一意性の証明)
12時間差となるのは、
0時台と12時台
1時台と13時台
…
11時台と23時台
ですが、秒数が一致するためには時数の一番初めの数字も同じでなければなりません。
この中でそれを満たすのは1時台と13時台だけだと言うことが分かります。
次に、この2つの時刻は1:xy:x1と13:zz:31ですが、2つが12時間差だということから、
x=3, y=3であることが一意に定まります。
つまり、2つのP時刻が12時間差になるのは、
1:33:31と13:33:31の場合だけ、ということになります。
【おまけ】
先ほどの数え上げから、
0時台〜9時台は各60回
10時台〜15時台は各6回
16時台〜19時台はなし
20時台〜23時台は各6回
ですから、1日にはP時刻が660回あることになります。
◆東京都 明 さんからの解答
0:00:00の表示があることから、このディジタルウォッチは24時間表示と判ります。
(23:59:59が最大表示))
【問題1】
0:01:00
【問題2】
23:55:32
【問題3】
下記の時間の間の2秒です。
9:59:59
10:00:01
【問題4】
16時から19時はP時刻がないことから、途中にP時刻がないような一番はなれた2つのP時刻は下記です。
15:55:51 〜 20:00:02
【問題5】
時間差が12時間に近いP時刻を求めることになります。
各時間帯で12時間差に近いP時刻の候補は下記のとおり。
1xxx1 〜 13xx31
2xxx2 〜 14xx41
3xxx3 〜 15xx51
8xxx8 〜 20xx02
9xxx9 〜 21xx12
10xx01 〜 22xx22
11xx11 〜 23xx32
2番目以後は最下位が異なるため、12時間+αの差となります。
1番目については下4桁を合わせるようにすればP時刻の対称性から自動的に下記が丁度12時間差として求まります。
1:33:31 〜 13:33:31
以下のプログラムで確かめました。(10進BASIC)
DIM PT(6) DIM MEMT(700,6) DIM CN(6) MAT PT=ZER DATA 3,10,6,10,6,10 MAT READ CN LET COUT=0 DO CALL check LET IDX=6 CALL countup IF PT(1)=2 AND PT(2)=4 THEN EXIT DO LOOP PRINT "P時刻数: ";COUT CALL near12 STOP SUB check IF PT(1)=0 THEN IF PT(2)<>PT(6) OR PT(3)<>PT(5) THEN EXIT SUB ELSE IF PT(1)<>PT(6) OR PT(2)<>PT(5) OR PT(3)<>PT(4) THEN EXIT SUB END IF LET COUT=COUT+1 FOR J=1 TO 6 LET MEMT(COUT,J)=PT(J) NEXT J END SUB SUB countup IF IDX=0 THEN EXIT SUB LET PT(IDX)=PT(IDX)+1 IF PT(IDX)>=CN(IDX) THEN LET PT(IDX)=0 LET IDX=IDX-1 CALL countup END IF END SUB SUB near12 LET IDP=0 DO LET IDP=IDP+1 LET IDS=IDP LET DET=12*3600 DO LET IDS=IDS+1 IF IDS>COUT THEN EXIT SUB END IF LET TSP=3600*(10*(MEMT(IDS,1)-MEMT(IDP,1))+MEMT(IDS,2)-MEMT(IDP,2)-12)+60*(10*(MEMT(IDS,3)-MEMT(IDP,3))+MEMT(IDS,4)-MEMT(IDP,4))+10*(MEMT(IDS,5)-MEMT(IDP,5))+MEMT(IDS,6)-MEMT(IDP,6) LET TSP=ABS(TSP) IF DET>=TSP THEN LET DET=TSP LET SIS=IDS ELSE EXIT DO END IF LOOP IF DET=0 THEN FOR J=1 TO 6 PRINT MEMT(IDP,J); NEXT J PRINT FOR J=1 TO 6 PRINT MEMT(SIS,J); NEXT J PRINT END IF LOOP END SUB END【おまけ】
T1:T2 T3:T4 T5の場合、
T1=T5=0〜9, T2=T4=0〜5, T3=0〜9 の600通り。
T1 T2:T3 T4:T5 T6の場合、
T1=T6=1 の時 T2=T5=0〜5, T3=T4=0〜5 の36通り。
T1=T6=2 の時 T2=T5=0〜3, T3=T4=0〜5 の24通り。
以上合計660通りとなります。
各時間の最初のP時刻を書き下ろしておくと見通しが良いようです。
◆栃木県 塩原中学校 からの解答
P時刻は
○:○○:○○…(1)
○○:○○:○○…(2)
に分けられる。
(1)の場合、「時と秒の一の位」と「分の十の位」が同じ数。
だから、○:●◎:●○と考える。
(2)の場合、「時の十の位と秒の一の位」と「時の一の位と秒の十の位」と「分の十の位と分の一の位」が同じ数。
だから、○●:◎◎:●○と考える。
【問題1】
1日の中で2番目のP時刻を見つければ良いので、(1)で考える。
できるだけ0を多く使えば、0:00:00の次のP時刻になるので0:01:00となる。
【問題2】
1日の最後なので、(2)で考える。
23時が1番最後の時なので、23:◎◎:32となる。
◎はできるだけ大きくすれば良いが、分の十の位が関係するので5になる。
だから、23:55:32である。
【問題3】
@の場合、○や●の数を変えると1時間1秒や10分10秒変わってしまう。
だから、◎の部分を変えるだけで、1分の間隔があく。
(2)の場合も同様に考えると、◎の部分を変えれば良いが11分の間隔なので、適さない。
(1)から(2)にまたがっている場合、まず、(1)の最後のP時刻を考える。
すると、9時が(1)の最後と考えられるので、9:●◎:●9となる。
最後になれば良いので、できるだけ大きい数を入れれば良い。
●は2つとも、分、秒の十の位の数なので5、◎は分の一の位なので9。
だから、9:59:59
次に、(2)の最初のP時刻を考える。
すると、 10時が(2)の最初と考えられるので、10:◎◎:01となる。
最初になれば良いので、できるだけ小さい数を入れれば良い。
◎は0になる。
だから、10:00:01
この2つの間隔なら2秒になり、1番近いP時間となる。
【おまけ】
(1)の場合、
○は0〜9の10通り、●は0〜5の6通り、◎は0〜9の10通りなので
10×6×10=600通り
(2)の場合、
○が1ならば、●は0〜5の6通り、
◎も0〜5の6通りで6×6=36通り
○が2ならば、●は0〜3の4通り、
◎は0〜5の6通りで4×6=24通り
したがって、600+36+24=660通りあることになる。
◆東京都 JAVAknight さんからの解答
●0:00:00の次のP時刻は0:01:00
●1日の最後のP時刻は23:55:32
●1番近い2つのP時刻は9:59:59と10:00:01
∵同一の分のうちでP時刻になる秒は、多くても1秒で、2つのP時刻を見つけるには、最低でも異なる分を選らばないといけない。
いまから探すべきなのは、2秒間以下しか離れていないP時刻のみである。
1秒間離れているのは、59秒と00秒なので、一方が9時台で、もう一方が0時台にならないといけない。
そのような時刻の組は存在しない。
同様に58秒と00秒の組も存在しない。
よって59秒と01秒の組だけが残る。
9時台と10時台の組み合わせしかありえないので、
答えは9:59:59,10:00:01である。
●間にP時刻が無い1番はなれた2つのP時刻は15:55:51と、20:00:02
∵これ以上離れた組がないことを示せばよい。
0時台から15時台までは、1時間未満しか離れていないP時刻の組がある。
同様に20時台から23時台にもある。
●一番離れたP時刻の組は1:33:31,13:33:31である。
∵分と秒を同じにして時を12時間隔たった時刻の組で両者ともP時刻になる組がこれだけであることを示す。
一方の時が0,2,3,4,5,6,7のときは、もう一方は、1で始まる。
これがP時刻となるには、秒が異なる必要がある。
一方の時が8,9,10,11のときも同様である。
一方が1時台のときは、もう一方は13時台で、秒は31に決まる。
1時台の方は分の10の位が3に決まり、そこで、13時台の方の分は33に決まる。
P時刻を列挙すると、
0:00:00,0:01:00,…,0:09:00,0:10:10,0:11:10,…,0:59:50,1:00:01,…,9:59:59,
10:00:01,10:11:01,10:22:01,10:33:01,10:44:01,10:55:01,…,15:55:51,20:00:02,…,23:55:32となる。
よって一日のうちにP時刻は660通り現れる。
◆福岡県 昼行灯 さんからの解答
【問題1】
0:01:00
【問題2】
23:55:32
【問題3】
9:59:59〜10:00:01、2秒
【問題4】
15:55:51〜20:00:02、4時間04分11秒
【おまけの計算】 660回
P時刻は5桁(0:00:00〜9:59:59)と6桁(10:00:00〜23:59:59)の2タイプが有るので、別々に考えると
・5桁(0:00:00〜9:59:59)
まず、存在する数字を桁数別に考えると
1桁目:0〜9、2桁目:0〜5、3桁目:0〜9、4桁目:0〜5、5桁目:0〜9 となり、
対応する桁(1−5、2−4)が共通の値であるため、単純にすべてを掛け合わせれば、
(1−5桁のパターン数)×(2−4桁のパターン数)×(3桁のパターン数)
10×6×10=600
となる。
・6桁(10:00:00〜23:59:59)
5桁の場合と違い、1桁目の値により、2桁目の存在範囲が変わるので、別々に考える
(10:00:00〜19:59:59)
1桁目:1、2桁目:0〜9、3桁目:0〜5、4桁目:0〜9、5桁目:0〜5、6桁目:0〜9
この場合の対応する桁を見ると、1桁目−6桁目の場合、同一の値を取れるのは1しかなく、
また2桁目−5桁目、3桁目−4桁目の場合は共に0〜5しか同一の値を取れない、よって、
(1−6桁のパターン数)×(2−5桁のパターン数)×(3−4桁のパターン数)
1×6×6=36 となる。
(20:00:00〜23:59:59)
同様に考えると、
1桁目:1、2桁目:0〜3、3桁目:0〜5、4桁目:0〜9、5桁目:0〜5、6桁目:0〜9
(1−6桁のパターン数)×(2−5桁のパターン数)×(3−4桁のパターン数)
1×4×6=24
よって、上記の値をすべて足すと
600+36+24=660となる。
Option Explicit 'EXCEL VBA用 P時刻算出VBA Sub P_Jikoku() '定義 Dim wkTime As Date '時刻用 Dim wkStrA As String '文字列用(順) Dim wkStrZ As String '文字列用(逆) Dim wkCntCell As Integer 'Excelのセル用のカウンタ Dim wkCntSec As Long '秒数増加用カウンタ Dim i As Integer '時刻=0 カウンタ=0 wkTime = 0 wkCntCell = 0 wkCntSec = 0 Do '文字に変更 wkStrA = Format(wkTime, "HMMSS") '文字列を反転 wkStrZ = StrReverse(wkStrA) '基本の文字列と反転後文字列を比較 If wkStrA = wkStrZ Then wkCntCell = wkCntCell + 1 Cells(wkCntCell, 1) = Format(wkTime, "H:MM:SS") End If '1秒進める wkCntSec = wkCntSec + 1 wkTime = wkCntSec / 24 / 60 / 60 '時刻が1を過ぎたら終了(Date型は整数部で日、小数点以下で時刻の為) Loop Until wkTime >= 1 MsgBox "P時刻は1日に" & wkCntCell & "件です" End Sub
◆兵庫県 Angel さんからの解答
時刻は24時間表記をします。
まずはP時刻の表記の方法について。
0時から9時までのP時刻(グループ(1)とします)は
a:bc:ba
と表記でき、変数の条件はそれぞれ
a={0.1.2.3.4.5.6.7.8.9}
b={0.1.2.3.4.5}(秒数、分数は60進法であるため)
c={0.1.2.3.4.5.6.7.8.9}
10時から19時までのP時刻(グループ(2)とします)は
1d:ee:d1
と表記でき、変数の条件はそれぞれ
d={0.1.2.3.4.5}(bと同じ理由)
e={0.1.2.3.4.5}⇔ee={00.11.22.33.44.55}(分数は60進法であるため)
20時から23時までのP時刻(グループ(3)とします)は
2f:gg:f2
と表記でき、変数の条件はそれぞれ
f={0.1.2.3}(時間は23時までなので)
g={0.1.2.3.4.5}⇔gg={00.11.22.33.44.55}(eと同じ理由)
こう表記できます。
すると、(1)ではn秒(nは0〜9までの整数)動かそうとすると n時間n秒 動かさなければならない
10m+n秒(mは1〜5までの整数)動かそうとすると n時間m分10m+n秒 動かさなければならない
(2)、(3)では、10m秒動かそうとすると m時間10m秒 動かさなければなければならない
ということがわかります。
(つまり、何秒かだけ動かす、というのは「基本的に」出来ない、ということです)
【問題1】
0:00:00の次のP時刻を探してください。
(1)なのはどう見てもあきらかです。
上記より、何秒かだけ動かすことは出来ないので、0:01:00が答えとなります。
【問題2】
一日の最後のP時刻を探してください。
(3)なのは同じくあきらかですね。
f,gの最大値を当てはめれば良いわけですから、
23:55:32が答えです。
【問題3】
一番近い2つのP時刻を探してください。
【問題4】
途中にP時刻がないような一番はなれた2つのP時刻を探してください。
ここで、上記(つまり、何秒かだけ動かす、というのは「基本的に」出来ない、ということです)の穴を見つけます。
私の書いた内容では、
(1)から(2)に移行するとき、
(2)から(3)に移行するとき、
(3)から(1)に移行するとき、
この場合について論議していません。
ではこのときどうなるか。
(1)→(2):9:59:59→10:00:01(2秒差)
(2)→(3):15:55:51→20:00:02(4時間4分11秒差)
(3)→(1):23:55:32→00:00:00(4分28秒差)
また、連続する二つのP時刻が両方とも(1)ならば、基本的にはcが増えると次のP時刻になるのですから大体1分ごと、
cだけが繰り上がるときと、cが繰り上がってさらにbが繰り上がるときにずれますが
(60進法ですから、例えば09が10になるのを繰り上がるというのはちょっとおかしいかもしれませんが、10進法的に考えてということです)
cだけが繰り上がるときは1分10秒、bも一緒に繰り上がるときは10秒の差になり、
両方とも(2)、或いは両方とも(3)なら基本的には11分ごと、
eeが55→00になるとき、5分10秒の差になります。
これで連続する二つのP時刻の差については網羅しましたので、
問題3の答えは 9:59:59と10:00:01
4の答えは 15:55:51と20:00:02
となります。
【問題5】
途中にP時刻があってもよいとき、一番はなれた2つのP時刻を探してください。
(12時間差に最も近いP時刻のことです。)
一番はなれたP時刻の「差」について論議します。
二つのP時刻が両方とが同じグループに入っていることはありえないだろうと予測を立てて進めていきます。
(この予測の真偽は差が9時間59分59秒以上のものを見つけることで真であると証明できます)
5-1)(1)と(2)にひとつずつに入っている場合
:を抜いた数を10進法の数字だと思い、大きいほうから小さいほうを引く、
つまり1deed1-abcbaの計算をします。
1deed1-abcba=pqrstuと置き、
まずこのpqrstu=120000があるかどうかの議論をすると、
1ケタ目よりa=1
5ケタ目よりd=3
2ケタ目よりb=3
4ケタ目よりe=3
3ケタ目よりc=3
となり、13:33:31と01:33:31がまずひとつの答えになります。
(同時に二つのP時刻は同じグループに入っていない証明になりました)
5-2)(1)と(3)にひとつずつ入っている場合
…は、ありません。(差が20時間以上になってしまいます)
5-3)(2)と(3)にひとつずつ入っている場合
2fggf2-1deed1=120000はなり得ません。(一ケタ目より)
故に、答えは 13:33:31と1:33:31 となります。
【おまけ】
1日にP時刻は何回あるでしょうか。
(1)グループのP時刻の数=a,b,cのそれぞれの数の組み合わせ=10*6*10=600
(2)グループのP時刻の数=d,eのそれぞれの数の組み合わせ=6*6=36
(3)グループのP時刻の数=f,gのそれぞれの数の組み合わせ=4*6=24
よって全部足して660個、となります。
◆ 問題へもどる
◆ 今週の問題へ