平成11年11月9日
[流れ星]第35回
数学的な応募問題<解答募集期間:11月6日〜11月20日>
[グレゴリオ暦]
太郎さんは、
「グレゴリオ暦」(西暦年号)を調べている中で、歴史上の空白の11日間があることに気が付きました。ユルウス暦は1582年10月4日(木曜日)までで、明くる日はグレゴリオ暦の1582年10月15日(金曜日)になっています。(ある本では10月12日の夜までと、朝起きて10月25日という出来事と書いてありました)そこで、今回の問題です。西暦2000年1月1日は土曜日です。
問題1:西暦2100年、西暦2200年、西暦2300年、西暦2400年、
西暦2500年の1月1日は何曜日ですか。
問題2:西暦2000年から400年までの毎年の1月1日は何曜日になっているか、
その回数を求めてください。
問題3:西暦の年数の下2桁が00である年(各世紀の最後の年)の1月1日は何曜日か
調べていくと、決して起こらない曜日があります。この曜日を求めてください。
<参考文献>:パズルより面白い中学入試の算数から一部改題(ピーター・フランクル):講談社
太郎さんは、電算部にある万年カレンダーで調べてもらおうと思っています。
<sambaGREEN>さんからの解答 6日午前1時受信 9日更新
Excel使って,答えを先に出して(所要時間10分位)から考えました。この手の問題は間違っても,結果からは気づきませんから,正直言って,暦算は嫌いなんですが(笑)
問題1:平年は365日ですから,曜日は1つ進みますが,閏年の翌年は曜日が2つ進みます。4年後には5つ進むことになります。
100÷4=25 25×5≡6(mod7)となり,100年後には曜日は1つ戻ります。
しかし,2×00年が閏年でないとき,100年後は2つ戻ります。
西暦2100年・・・金曜日,西暦2200年・・・水曜日,西暦2300年・・・月曜日
西暦2400年・・・土曜日,西暦2500年・・・金曜日
問題2:計算しやすいように,2001年から2100年の100年で計算します。
日=1,月=2,火=3,水=4,木=5,金=6,土=7とすると,
7と4の公倍数28年周期(2345712356713456123467124567)で曜日は変わります。
この周期には4回ずつ現れ,100÷28=3あまり16で,16の中には3と5(2番目と4番目に注意)が3回,他は2回あらわれます。したがって,3と5が15回,その他が14回ということになります。
2101年から2200年は(7123567134561234671245672345)の周期で,
15回あるのは2番目と4番目の1と3。
同様にして,2201年から2300年は 1と6が2回。2301年から2400年は 4と6が2回
従って1が58回,2が56回,3が58回,4が57回,5が57回,6が58回,7が56回
西暦2000年の7を加えて,
日曜58回,月曜56回,火曜58回,水曜57回,木曜57回,金曜58回,土曜57回
問題3:問1の結果から,土,金,水,月,で繰り返し,日,火,木曜日は,あり得ない。
コメント:400年周期で曜日は繰り返しますから,日曜,火曜,金曜が多く,月曜,土曜が少ないわけですね。
<浜田 明巳>さんからの解答 6日午後4時受信 9日更新
第35回数学的な応募問題[グレゴリオ歴]今回はQbasicで解いて見ました.やっつけ仕事で正解だといいんですが.この頃ペースが早くて大変です.皆さんすごいですね.
問題1:2100 金, 2200 水, 2300 月, 2400 土,2500 金
問題2:日58,月56,火58,水57,木57,金58,土57
問題3:日,火,木
'gregorio.bas
CLS : DIM day$(6), kaitou2(6), kaitou3(6)
day$(0) = "SUN": day$(1) = "MON": day$(2) = "TUE": day$(3) = "WED"
day$(4) = "THU": day$(5) = "FRI": day$(6) = "SAT"
FOR j = 0 TO 6: kaisuu(j) = 0: NEXT: wa = 365 MOD 7
PRINT "Q1"
FOR year = 2000 TO 30000
IF year = 2000 THEN
youbi = 6
ELSEIF (year - 1) MOD 4 > 0 OR ((year - 1) MOD 100 = 0 AND (year - 1) MOD 400 > 0) THEN
youbi = (youbi + wa) MOD 7
ELSE
youbi = (youbi + wa + 1) MOD 7
END IF
IF year MOD 100 = 0 AND year > 2000 AND year < 2600 THEN
PRINT year; day$(youbi)
END IF
IF year <= 2400 THEN kaitou2(youbi) = kaitou2(youbi) + 1
IF year MOD 100 = 0 THEN kaitou3(youbi) = kaitou3(youbi) + 1
IF year = 2500 THEN
PRINT "Q2": FOR j = 0 TO 6: PRINT day$(j); kaitou2(j); " "; : NEXT: PRINT
END IF
NEXT
PRINT "Q3"
FOR j = 0 TO 6: IF kaitou3(j) = 0 THEN PRINT day$(j); " ";
NEXT: PRINT
END
<Jun>さんからの解答 7日午後9時受信 9日更新
寄せられた
「解答」はここをクリックください。<ch3cooh>さんからの解答 8日午後1時受信 9日更新
1年は(閏年を除けば)365日、1週間は(今は戦争中でないので:笑)7日間、すると、1年間は52週+1日となります。
つまり、日月火水木金土 を正順とすると、閏年以外は正順に1づつずれることになります。閏年ではさらに+1日あるので2つずれます。
これぐらいであれば、手で計算も出来そうですが、途中でのミスがいやなので、プログラムで対処しました。
Q35.1)
(日本語が使えないので ローマ字で出力しました。)
2000 nenn : do you
2100 nenn : kin you
2200 nenn : sui you
2300 nenn : getsu you
2400 nenn : do you
(漢字に手で直すと)西暦 2100年: 金曜 西暦 2200年: 水曜 西暦 2300年: 月曜 西暦 2400年: 土曜
ここら辺までは、筆算でも出来そうです。
100年を365*100+25 or 365*100+24なので、
((7*52)+1)*100+25= (7*52*100)+100+25
125= (7*17)+6, 124= (7*17)+5で、どのようにずれていくかだけは単純に計算できます。
Q35.2)
nichi you : 58
getsu you : 56
ka you : 58
sui you : 57
moku you : 57
kin you : 58
do you : 57
(漢字に手で直すと)日曜: 58回 月曜: 56回 火曜: 58回 水曜: 57回 木曜: 57回 金曜: 58回 土曜: 57回
Q35.3)
答え:日曜・火曜・木曜
100年毎に、ずれる順序を考えると・・・
400で割りきれる年が開始点 : -1
400で割りきれない年が開始点 : -2
で、(-1,-2,-2,-2)がループになる。ループ内の和は-7であるため、400年毎に同じ曜日となる。
あとは、開始点を確認するだけで、出てこない値(3つ)を求めることが出来る。
<水の流れ:コメント> 8日記入
皆さんの早い解答に感謝します。次回は「大縄跳び」の軌跡の問題です。これも、よろしくね。
解答者の皆さんに「西暦2000年から400年までの」の解釈に違いが出てきていました。太郎さんは、400年で1周期に気がついていましたので、400回の中で、1月1日が何曜日ずつになっているかを知ってもらいたかったのです。もちろん、問題2で2000年と2400年が同じ土曜日ですので、土曜日が56回より1回多い57回でも良いわけです。表現に的確さを欠きました。お許しを!
<自宅>
mizuryu@aqua.ocn.ne.jp最初のページへもどる