GKT2018

[前に戻る]  [トップへ] [コメントする]

PWD:

2015開智先端A大問4(3)(4)をMathematicaでオトナ解き

[カテゴリ: マス » さんすう] エントリー: 2015-01-15

ここは毎年こういう無理筋の問題を出す。

【問題】
長針と短針の長さが同じ時計があります.どちらの針も,それぞれ一定の速さで動いています.
夜中の0時から昼の12時までの半日の間で時刻を考えます.
但し昼の12時ちょうどは除きます.
(1)(2) 略
(3) この時計から読み取れる時刻が2通りになってしまう時刻は何回ありますか.
(4) (3)の中で,長針と短針の針の間の角が最も大きくなるときの角度は何度ですか.ただし,間の角は180度以下とします.

↓Mathematicaコード(実際に解いているのはFor文の中)
ClearAll["Global`*"]; a = {};
mn[r_] := {IntegerPart[r], Rationalize[r - IntegerPart[r]]};
For[m = 0, m < 12, m++,
 For[n = 0, n < 12, n++,
  If[m != n,
   a = Append[a, Flatten[{m, mn[5 n + y], n, mn[5 m + x],
        Min[360 - Abs[5 n + y - 5 m - x]*6, Abs[5 n + y - 5 m - x]*6], ""}
       /. Solve[{12 x - y == 5 n, 12 y - x == 5 m, 0 < x < 5, 0 < y < 5}, {x, 
         y}]]]]]]
b = a /. 0 -> ""; maxAngle = 0;
For[i = 1, i <= Length[a], i++,
 maxAngle = Max[a[[i, 7]], maxAngle]]
Print["時刻の総数:", Length[a]]
Print["最大の角:", mn[maxAngle][[1]], mn[maxAngle][[2]], "度"]
Print["以下が全ての場合:"]
For[i = 1, i <= Length[a], i++,
 a[[i, 8]] = If[a[[i, 7]] == maxAngle, "(最大)", ""];
 Print["(", i, ") ", ToExpression["0" <> ToString[b[[i, 1]]]], "時",
  b[[i, 2]], b[[i, 3]], "分は", ToExpression["0" <> ToString[b[[i, 4]]]], "時",
  b[[i, 5]], b[[i, 6]], "分とも読め,このとき両針間の小さい方の角度は", " ",
  mn[a[[i, 7]]][[1]], mn[a[[i, 7]]][[2]], "度", a[[i, 8]]]]

↓実行結果

時刻の総数:132

最大の角:166$\frac2{13}$度

以下が全ての場合:

(1) 0時5$\frac{5}{143}$分は1時$\frac{60}{143}$分とも読め,このとき両針間の小さい方の角度は 27$\frac9{13}$度

(2) 0時$10\frac{10}{143}$分は2時$\frac{120}{143}$分とも読め,このとき両針間の小さい方の角度は 55$\frac5{13}$度

(3) 0時15$\frac{15}{143}$分は3時1$\frac{37}{143}$分とも読め,このとき両針間の小さい方の角度は 83$\frac1{13}$度

……(以降略)

posted by GKT

[前に戻る]  [トップへ] [コメントする]


PWD: