問題概略
1 から 6 までの数が書かれたカードが 1 枚ずつ,計 6 枚あります。
一辺の長さ 1 の正三角形 ABC の頂点 A からスタートして,カードを 1 枚選んでそのカードに書かれた数だけ反時計回りに進みます。どのカードも 1 回しか使いません。
カードがなくなるまでこの操作を続けたとき,スタート時以外に A で止まることが1回しかないようなカードの選び方は何通りあるか求めてください。
http://www.sansu.org/used-html/index1132.html
解説の pdf も作りました。きれいなレイアウトで読みたい方はこちらをどうぞ。
3で割った余りに注目して数える
周の長さは 3 なので,3 で割った余りに注目します。
引いたカードの数字の和を 3 で割った余りが 0, 1, 2 のときそれぞれ A, B, C に止まります。
1 から 6 までの和は なのでゴール地点は A です。
スタート時以外に A で止まることが 1 回しかないのは,スタート時とゴール時以外は A に止まらないときです。
引いたカードの和を 3 で割った余りが最後以外 0 にならないようなカードの順列の個数が答えです。
1~6 が 1 枚ずつあるのは 0, 1, 2 が 2 枚ずつあるのと同じ。以下,この 6 枚について考えます。
1 枚目は 1 か 2 で,どちらでもいいので 1 の場合を考えて 2 倍することにします。
1 と 2 だけに注目すると 1122, 1212, 1221 の 3 パターンありますが,後ろ 2 つは により不適です。
1122 に 0 を 2 つ挿入する方法は の に 0 を 2 つ入れる方法と同じだけあります。
00 というカタマリを入れる方法が 3 通りあり,1 個ずつバラバラに入れる方法が 通りあるので計 6 通りです。
まとめると 0, 1, 2 の順列が 通りあり,0, 1, 2 と 1~6 との対応が 通りあるので,答えは 通りです。
おまけ:累積和
プログラムを組んで解く場合,これは累積和の問題です。
1~6 の順列のうち,累積和の数列が 3 の倍数を 1 個しか含まないものの個数が答えです。
順列は全部で 個しかないので,そのまま全探索できます。mathematicaでやりました。
In[]:= AbsoluteTiming[ lst = Mod[#, 3] & /@ (Accumulate /@ Permutations@Range@6); ans = Length@Select[lst, Count[#, 0] == 1 &]] Out[]= {0.0013144, 96}