「今月の問題」 第70回 (平成17年7月)

<Philip Franklin氏の曜日を求める公式>

   

   ただし、[  ]はガウスの記号とよばれるもので、
   整数部分を表す。(たとえば [3.14]=3 です。)

   c は 西暦年数の上2けた
   y は 西暦年数の下2けた
   m は 月数 (ただし 1月は前年の13月、2月は        前年の14月として計算する)
   d は 日数

 w を7でわったあまりによって
 1(日) 2(月) 3(火) 4(水) 5(木) 6(金) 0(土)

 となるようです。

 先日、曜日を求める公式があることを知りました。よしお君の誕生日である1958年7月2日の曜日を、公式を使って求めてみました。
 つまり
 w=[c/4]-2c+[y/4]+y+[26(m+1)/10]+d 
  の公式にc=19、y=58、m=7、d=2を代入すると、
 w=[19/4]-2×19+[58/4]+58+[26(7+1)/10]+2
  =4-38+14+58+20+2
  =60 になりました。
 wを7で割ると
   60÷7=8・・・4   
 よって、水曜日になります。  

 ここで問題です。西暦1958年7月2日から2005年7月2日までの48回の誕生日のうち、曜日が水曜日であったのは何回でしょうか。

<正解者一覧表>          
正解者順位     name      メール到着日時     備 考  
 1 呑 さん2005/7/1 0:04 
 2nobu さん2005/7/1 0:11石川県 
 3 mhayashi さん2005/7/1 0:14天下の台所 
 4なにわ さん2005/7/1 0:17西宮市 
 5藤本悟 さん2005/7/1 0:26池田市 
 6信三 さん2005/7/1 1:13シリコンバレーの住人 
 7いちもく さん2005/7/1 4:55 
 8経友会の進作 さん2005/7/1 6:16京都府木津町・67歳
 9akira さん2005/7/1 7:28東京都
10巷の夢 さん2005/7/1 7:34宮城県
11kasama さん2005/7/1 10:09和歌山県プログラマ
12ゴンとも さん2005/7/1 11:16 
13 ろろ さん2005/7/1 14:01神奈川県 
14una さん2005/7/1 18:19東京都練馬区 
15小6(受験生)!?!?航空アニマル さん2005/7/1 20:43東京 
16y.kobayashi さん2005/7/1 21:10 
17lapin さん2005/7/1 22:23大阪府交野市 
18小5(そうだよ)???海上アニマル さん2005/7/1 23:01東京都 
19カエ さん2005/7/2 6:21 
20勇水 さん2005/7/3 0:54 
21スモークマン さん2005/7/3 8:41目指せ囲碁5段! 
22 安曇野山峯農園 さん2005/7/3 23:03長野県のりんご農家 
23浜田明巳 さん2005/7/4 8:30 
24佐藤 広宣 さん2005/7/4 14:27東京都 
25oguchan1 さん2005/7/4 23:36岡山県 
26teki さん2005/7/5 20:30大阪府 
27修学旅行で安曇野行きます さん2005/7/5 22:15トーキョー 
28剣道部員 さん2005/7/5 23:07兵庫県豊岡市 高2 
29masa さん2005/7/5 23:45山口県 
30安楽 さん2005/7/6 9:56宮崎県 
31 リンデン さん2005/7/6 10:22長崎県 学習塾
32ニア さん2005/7/8 4:55滋賀県 
33あっけらけ さん2005/7/8 18:36東京都6年生23区内 
34中1!!!(マジで)鉄道アニマル さん2005/7/8 21:29 
35 nakka さん2005/7/10 10:26個別指導塾講師
36翔 さん2005/7/12 13:17 
37y.okada さん2005/7/12 20:09中二 
38アニマル募集中 さん2005/7/13 18:27東京都6年生26市内 
39 あつきパパ さん2005/7/15 18:22愛知県 2歳児と0歳児の父
40おとお さん2005/7/18 15:18三重 
41小さな白衣の天使 さん2005/7/27 23:47広島県のとぁる私立の3)
42ウジミヤジュン さん2005/7/28 18:26東京のシャ 
43たかぴろ さん2005/7/29 18:49滋賀県 カリスマ家庭教師
44 ほげ さん2005/7/29 19:08北の隠れ家
45すてっぷす さん2005/7/31 21:09 

答えは 7回 でした。

 

ゴンとも さんより  投稿日:2005/07/01(Fri) 10:56

やり方は十進basicで以下です
1900年代は
for y=58 to 99
let w=-12+int(y/4)+y
if mod(w,7)=4 then print y
next y
end
58 69 75 80 86 97 で 1900年代は6通り
2000年代
for y=0 to 5
let w=-13+int(y/4)+y
if mod(w,7)=4 then print y
next y
end
3 で 2000年代は1通り で総計7通り・・・・・・(答え)

 

 経友会の進作 さんより

(1):今回の問題は「公式」に基づき地道に解きました。
(2):1958年から2005年の48年を検討の年としました。
(3):最初の1958年7月2日が水曜日なので以降・・・
   69,75,80,86,97,03年の各7月2日が水曜日で6回あり、
   計7回です。

ろろ さんより

今回は公式を使うと訳が分からなくなったので、表にして考えま
した。
1年は365日なので前年水曜日の場合は翌年木曜日と一つ曜日が
ずれます。
ところが、4年に1度のうるう年では2つずれてしまいます。
4年を1周期にすると48÷4=12週
5列x12行の表に水曜日から順に曜日をいれていきます。
横を5列にしたのは、ずれてしまったために出現しなかった曜日
があるためです。
3列目は出現しない曜日になります。
5x12の表の中に水曜日は9回ありますが、そのうち3列目に
来るのが2回あるので
9−2=7

 

スモークマン さんより

365/7=52・・・1
つまり、7年ごとに同じ曜日が巡ってくる。
しかし、うるう年が、3回あるので、
47/7=6・・・5
5+3=8
8/7=1・・・1
結局、6+1=7 回

 

浜田明巳さんより

 エクセルのマクロで解いた.不自然に一つの公式にまとめず,基本に忠実に曜日を計算した.つまり西暦1年1月1日の月曜日から,閏年に注意して(年が400の倍数であるか,または4の倍数でありかつ100の倍数でない),順に曜日を計算していって,1958年以降7月2日が水曜日である年をすべて表示するようにした.
 この結果,次の7回あることが分かる.
  1958,1969,1975,1980,1986,1997,2003

Option Explicit
Sub Macro1()
    Sheets("Sheet1").Select
    Cells(1, 1).Value = 0
    Range("A1").Select
    '
    Dim year As Integer
    Dim month As Integer
    Dim week As Integer '0:日, 1:月, 2:火, 3:水, 4:木, 5:金, 6:土
    week = 1 - 1 '0001/01/01->月曜日
    For year = 1 To 2005
      If year <> 1958 Then
        week = (week + (365 + leap(year))) Mod 7
      Else
        For month = 1 To 7 - 1
          week = (week + days(1958, month)) Mod 7
        Next month
        week = (week + 2) Mod 7 '1958/07/02の曜日
      End If
      If year >= 1958 And week = 3 Then
        Cells(1, 1).Value = Cells(1, 1).Value + 1
        Cells(Cells(1, 1).Value, 2).Value = year
        Range("B" & Cells(1, 1).Value).Select
      End If
    Next year
    Range("A1").Select
End Sub
Private Function leap(ByVal year As Integer) As Integer
    leap = -((year Mod 4 = 0 And year Mod 100 > 0) Or (year Mod 400 = 0))
End Function
Private Function days(ByVal year As Integer, ByVal month As Integer) As Integer
    days = 31 + (month = 4 Or month = 6 Or month = 9 Or month = 11) + 2 * (month = 2 And leap(year) = 1) + 3 * (month = 2 And leap(year) = 0)
End Function

たかぴろ さんより

 一年365日は52週間と1日
だから1959年の7月2日は木曜日
こんな感じで、7月2日が次に水曜日になるのは8回目
その次は8+7=15回目
よって7/2が水曜なのは
1,8,15,22,29,36,43回目の7/2
よって答えは
7回!!