第331問の解答


問題[整数の性質]

までの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とおくと、
 SA×100+B×110+(CDEFG)×111+H×11+
  =(CDEFG)×111+B×110+A×100+H×11+ ・・・ (1)
となります。

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

参考図1

: 3871

以上

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

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

  • ステップ1 :ynnのときはそのまま。
    ynnのとき、yinとなるのが、ikとするとき、
    先頭のynyknを 入れ替え、このときのS1とする。
     S1−S0
    anxnakynanynakxn
    =(anak)(xnyn)≧0
     
  • ステップ2 :yn-1n-1のときはそのまま。
    yn-1n-1のとき、yin-1となるのが、ik'とするとき、
    2番目のyn-1ykn-1を 入れ替え、このときのS2とする。
     S2−S1
    an-1yn-1ak'xn-1an-1xn-1ak'yn
    =(an-1ak')(xn-1yn-1)≧0

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

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

(例)
参考図2


解答例2

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

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

求めるSとおくと、
 SA×100+B×110+(CDEFG)×111+H×11+
  =(ABCDEFGH)×111 −(×110+H×100+A×11+B×1) ・・・ (2)
となります。

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

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


(その他の解法)