平成9年7月23日 (文責)東京工業大学総合情報処理センター SuperCon'97実行委員会
底辺が1m(1000mm)、両底角がそれぞれα、β度の三角形ABCをビ リヤードの枠組と考える(図1)。この中では、ビリヤードの球は、理想的な 状態で動くものとする。つまり、壁では、光が鏡に当たったように反射し、速 度の大きさは変らないものとする。また、ビリヤードの球は、仮想的に「大きさ」 0と考える。
このビリヤード枠の底辺のある位置から、ある角度でビリヤードの球を発射させ ると、壁に何回か当たった後、最初と同じ状態に戻ってくることがある。これ を、ビリヤード球の「サイクル」と呼ぶことにしよう。さらに、壁にn回当た った後、始めて最初と同じ状態に戻る場合を、「周期nの基本サイクル」と呼 ぶことにする。(同じ状態には戻るが、それが初めてではない場合には、単に 「周期nのサイクル」と呼ぶことにする。
たとえば、正三角形ABCで、底辺cの左(頂点A)から40mmの位置より 角度60度で辺aに向けて球を発射させると、辺a、b、c、a、b、cと当 たり、発射された時と同じ位置に戻ってくる。その後、発射された時と同じ6 0度の角度で辺aに向けて運動を続ける。
したがって、これは周期6のサイクルになっている。なお、周期を数えるときは、 最後の辺cも含めることにする。また、a、b、c、a、b、cを、この巡回の 「衝突履歴」と呼ぶことにする。
与えられた三角形ビリヤード枠に対して、周期nの基本サイクルになるよ うな球の発射位置(頂点AからXmm)と発射角度(θ度)を、すべて求めよ。 ただし、1つの衝突履歴に対して、1組の発射位置、発射角度を求めればよい。
なお、周期nは、あらかじめ決められているものとする。(具体的には、5日 の本選課題説明のとき決めるが、大体500前後の偶数と考えてよい。)した がって、プログラムとしては、(三角形の底角)α、βを入力としてもらい、 基本サイクルを列挙するものを考える。
複数の入力例に対しプログラムの性能をテストし、合計計算時間で評価する。 ただし、正しい解を全部出力したか、間違った解がなかったか、をチェックし、 誤りに対してはペナルティ時間を加算する。(詳しい計算方法は、5日の本選 課題説明会のときに発表する。)