第331問の解答


問題[整数の性質]

0〜8までの9個の数字を並べて9ケタの整数を作ります。
この9ケタの整数から連続した3ケタの整数を以下のようにして取り出し、その和を考えます。

例)9ケタの整数が321087654の場合なら、
 321+210+108+ 87+876+765+654=3021

では、このようにして作る和がもっとも大きくなるように9ケタの整数を作ると、和はいくつになるでしょうか。


解答例1

AЯOTさん、Taroさん、高橋 道広さん、トトロ@Nさん、小杉原 啓さん、ぶなしめじTZさん、ねこやんさん、ななぞうさん、N.Nishiさん、Nonさん、M.Hossieさん、小西孝一さん、ミミズクはくず耳さん、miyaさん、ふじさきたつみさん、大岡 敏幸さん、ニィ〜さん、あほあほまんさん、 他

9ケタの整数をABCDEFGHIとおきます。

求める和をSとおくと、
 S=A×100+B×110+(C+D+E+F+G)×111+H×11+I
  =(C+D+E+F+G)×111+B×110+A×100+H×11+I ・・・ (1)
となります。

Sを最大にするには、 (1)式で係数の大きい順に数値を並べていけばいい(補題参照)ので、
 C、D、E、F、G=8、7、6、5、4(並べ替えても可)、B=3、A=2、H=1、I=0
のとき、
 S=(8+7+6+5+4)×111+3×110+2×100+1×11+0
  =3871
となります。

参考図1

答: 3871

以上

(補題)an≧an-1≧an-2≧・・・≧a1>0、xn>xn-1>xn-2>・・・>x1>0のとき、
Σai・yi(ただし、yiはxiを並べ替えたもの) は、yiが大きい順に並んでいるとき最大

(証明)任意にxiを並べ替えたときのyiに対して、S0=Σai・yiとします。

  • ステップ1 :yn=xnのときはそのまま。
    yn≠xnのとき、yi=xnとなるのが、i=kとするとき、
    先頭のynとyk=xnを 入れ替え、このときの和をS1とする。
     S1−S0
    =
    (anxn+akyn)−(anyn+akxn)
    =(an−ak)(xn−yn)≧0
     
  • ステップ2 :yn-1=xn-1のときはそのまま。
    yn-1≠xn-1のとき、yi=xn-1となるのが、i=k'とするとき、
    2番目のyn-1とyk=xn-1を 入れ替え、このときの和をS2とする。
     S2−S1
    =
    (an-1yn-1+ak'xn-1)−(an-1xn-1+ak'yn)
    =(an-1−ak')(xn-1−yn-1)≧0

以下、同様にして、S0≦S1≦S2≦・・・≦Sn-1となります。

以上の操作で、必ずSn-1=Σai・xiとなるので、Σai・xiが最大。

(例)
参考図2


解答例2

CRYING DOLPHINさん、ステップ ばい ステップさん、 他

9ケタの整数をABCDEFGHIとおきます。

求める和をSとおくと、
 S=A×100+B×110+(C+D+E+F+G)×111+H×11+I
  =(A+B+C+D+E+F+G+H+I)×111 −(I×110+H×100+A×11+B×1) ・・・ (2)
となります。

前半部分は一定値=36×111=3996なので、後半部分を最小にすればよい。

従って、I=0、H=1、A=2、B=3のとき最大、
 最大値=3996−(0×110+1×100+2×11+3×1)
     =3996−125
     =3871


(その他の解法)