隣どうしの数字の和が5になる場所が2ヵ所ある4桁の数 /「算数にチャレンジ!!」第1134問

問題概略

0, 1, 2, 3, 4, 5 の書かれたカードが 1 枚ずつ,全部で 6 枚あります。
これらのカードのうち 4 枚を使って 4 桁の整数を作ります。
隣どうしの数字の和が 5 になる場所が 2 ヵ所ある数の総和  S を求めてください。

http://www.sansu.org/used-html/index1134.html

解説の pdf も作りました。きれいなレイアウトで読みたい方はこちらをどうぞ。

drive.google.com

どの桁の和が5か?

4 桁の数を  abcd とします。

 a+b=5,  b+c=5,  c+d=5 のうち 2 つが成立するので 3 つの場合が考えられます。

  1.  a+b=5,\, b+c=5,\, c+d\ne 5
  2.  a+b\ne 5,\, b+c=5,\, c+d=5
  3.  a+b=5,\, b+c\ne 5,\, c+d=5

1. のとき  a+b=5,  b+c=5 から  a=c が言えますが,これは「カードが 1 枚ずつある」に反するので不適。
2. も同様に不適なので条件をみたす数は 3. の  a(5-a)b(5-b) の形の数です。

 a,  b の条件は

 1\leqq a\leqq 5,\, 0\leqq b\leqq 5,\, b\ne a,\, b\ne 5-a

ここまでわかれば後は簡単です。

  • 上 2 桁は 14, 23, 32, 41, 50 の 5 通り
  • 下 2 桁は 05, 14, 23, 32, 41, 50 の 6 通り

上 2 桁が 14 のとき下 2 桁は 05, 23, 32, 50 の 4 通りです。
他の場合も同様で,条件をみたす 4 桁の数は  5\cdot 4=20 個あります。

この数を全部書いて総和を求めてもいいのですが,上 2 桁ごとにグループ分けすると楽です。
たとえば上 2 桁が 14 のときの和は次のようになります。

 1400\cdot 4+(5+23+32+50)=5710

他の場合も同様です。

 S=\left\{(1400+4100)\cdot 4+(5+23+32+50)\cdot 2\right\}
 \quad +\left\{(2300+3200)\cdot 4+(5+14+41+50)\cdot 2\right\}
 \quad +\left\{ 5000\cdot 4+(14+23+32+41)\right\}
 =64550

Σで書く

この和は一応  \sum でも書けます。 a(5-a)b(5-b) の形の数の値を  f(a,\, b) とおきます。

 f(a,\,b)=1000a+100(5-a)+10b+(5-b)=900a+9b+505

一旦  b\ne a,  b\ne 5-a を無視して足しあわせて, b= a または  b= 5-a の項の和を引きます。

\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}


variee.hatenablog.com