スーパーコンピュータコンテスト'97
本選課題

                                         平成9年7月23日 
                                         (文責)東京工業大学総合情報処理センター
                                               SuperCon'97実行委員会
                                         

三角形ビリヤードと周期 n の基本サイクル

底辺が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 のサイクルを列挙する問題

与えられた三角形ビリヤード枠に対して、周期nの基本サイクルになるよ うな球の発射位置(頂点AからXmm)と発射角度(θ度)を、すべて求めよ。 ただし、1つの衝突履歴に対して、1組の発射位置、発射角度を求めればよい。

なお、周期nは、あらかじめ決められているものとする。(具体的には、5日 の本選課題説明のとき決めるが、大体500前後の偶数と考えてよい。)した がって、プログラムとしては、(三角形の底角)α、βを入力としてもらい、 基本サイクルを列挙するものを考える。

評価方法

複数の入力例に対しプログラムの性能をテストし、合計計算時間で評価する。 ただし、正しい解を全部出力したか、間違った解がなかったか、をチェックし、 誤りに対してはペナルティ時間を加算する。(詳しい計算方法は、5日の本選 課題説明会のときに発表する。)