問題概略
0, 1, 2, 3, 4, 5 の書かれたカードが 1 枚ずつ,全部で 6 枚あります。
これらのカードのうち 4 枚を使って 4 桁の整数を作ります。
隣どうしの数字の和が 5 になる場所が 2 ヵ所ある数の総和 を求めてください。
解説の pdf も作りました。きれいなレイアウトで読みたい方はこちらをどうぞ。
どの桁の和が5か?
4 桁の数を とします。
, , のうち 2 つが成立するので 3 つの場合が考えられます。
1. のとき , から が言えますが,これは「カードが 1 枚ずつある」に反するので不適。
2. も同様に不適なので条件をみたす数は 3. の の形の数です。
, の条件は
ここまでわかれば後は簡単です。
- 上 2 桁は 14, 23, 32, 41, 50 の 5 通り
- 下 2 桁は 05, 14, 23, 32, 41, 50 の 6 通り
上 2 桁が 14 のとき下 2 桁は 05, 23, 32, 50 の 4 通りです。
他の場合も同様で,条件をみたす 4 桁の数は 個あります。
この数を全部書いて総和を求めてもいいのですが,上 2 桁ごとにグループ分けすると楽です。
たとえば上 2 桁が 14 のときの和は次のようになります。
他の場合も同様です。
Σで書く
この和は一応 でも書けます。 の形の数の値を とおきます。
一旦 , を無視して足しあわせて, または の項の和を引きます。
\begin{align*}
S=\sum_{b=0}^5\sum_{a=1}^5 f(a,\,b)-\sum_{a=1}^5 f(a,\,a)-\sum_{a=1}^5 f(a,\,5-a)
\end{align*}
この式は手計算よりプログラム向きです。mathematica による実装例を載せておきます。
In[]:= AbsoluteTiming[ f[a_, b_] := FromDigits@{a, 5 - a, b, 5 - b}; ans = Sum[f[a, b], {a, 1, 5}, {b, 0, 5}] - Sum[f[a, a] + f[a, 5 - a], {a, 1, 5}]] Out[]= {0.0001403, 64550}