第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
となります。
答: 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
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
(その他の解法)
- プログラムで計算 ・・・ ハラギャーテイさん、tomatoさん、工房さん、他