和と差から復元する

 投稿者:山中和義  投稿日:2014年 8月12日(火)09時58分36秒
  問題
3つの数a,b,cがあります。
そのうちの2つを取って和をつくると、3通りの和x,y,zができます。
(3通りの中に同じものがある可能性はあます)
このとき、3つの数をもとめなさい。

答え
連立方程式
 a+b  =x
 a  +c=y
   b+c=z
を解けばよい。
辺々をたすと、2(a+b+c)=x+y+z ∴a+b+c=(x+y+z)/2
よって、
 a=(x+y+z)/2-z
 b=(x+y+z)/2-y
 c=(x+y+z)/2-x
(終り)



問題
2けたの整数が3つあります。
この中の2つの数の和と差を、大きい順にすべて書き出したところ、
 94,72,50,44,28,22
となりました。
3つの整数をもとめなさい。

答え
3つの数を大きい順に、a[1],a[2],a[3]とする。
和と差を大きい順に、s[1],s[2],s[3],s[4],s[5],s[6]とする。
和と差は、
 a[1]+a[2]
 a[1]     +a[3]
      a[2]+a[3]
 a[1]-a[2]
 a[1]     -a[3]
      a[2]-a[3]
なので、
a[1]+a[2]≧a[1]+a[3]≧a[2]+a[3]に注意して、6つから3つを選んで、
 a[1]+a[2]     =s[i]
 a[1]     +a[3]=s[j]
      a[2]+a[3]=s[k]
となる連立方程式に帰着させる。
C(6,3)=20通りを検証する。


DATA 94,72,50,44,28,22
DIM S(6)
MAT READ S
FOR i=1 TO 4 !a[1]+a[2]
   FOR J=i+1 TO 5 !a[1]+a[3]
      FOR K=J+1 TO 6 !a[2]+a[3]
         LET T=S(i)+S(J)+S(K) !総和
         PRINT T
         LET A=T/2-S(K)
         LET B=T/2-S(J)
         LET C=T/2-S(i)
         IF C>=10 THEN PRINT A;B;C
      NEXT K
   NEXT J
NEXT i
END



答え
3つの数を大きい順に、a[1],a[2],a[3]とする。
和と差を大きい順に、s[1],s[2],s[3],s[4],s[5],s[6]とする。
和と差は、
 a[1]+a[2]         ←
 a[1]     +a[3]
      a[2]+a[3]
 a[1]-a[2]
 a[1]     -a[3]
      a[2]-a[3]
である。
総和は、4a[1]+2a[2]=Σs[k]
いま、a[1]+a[2]=s[i]を選んだとすると、2a[1]+2s[i]=Σs[k]
よって、a[1]=(Σs[k]-2s[i])/2、a[2]=s[i]-a[1]
続いて、a[1]+a[3]=s[j]を選んだとすると、a[3]=a[j]-a[1]
ただし、a[1]+a[2]≧a[1]+a[3]に注意する。
C(6,2)=15通りを検証する。


DATA 94,72,50,44,28,22
DIM S(6)
MAT READ S
LET T=0 !総和
FOR i=1 TO 6
   LET T=T+S(i)
NEXT i
PRINT T
FOR i=1 TO 5 !a[1]+a[2]=s[i]
   LET A=(T-2*S(i))/2
   LET B=S(i)-A
   IF B>=10 THEN
      PRINT S(i); A;B !debug

      FOR J=i+1 TO 6 !a[1]+a[3]=s[j]
         LET C=S(J)-A
         IF C>=10 THEN PRINT A;B;C
      NEXT J

   END IF
NEXT i
END



出題を算数の範囲とすると、すなわち、負の数を扱わない場合、

 a[1]≧a[2]≧a[3]≧0とする。
 a[1]+a[2]≧a[1]+a[3]≧a[2]+a[3]
 a[1]+a[3] -(a[1]-a[2])=a[2]+a[3]≧0
 a[1]+a[3] -(a[1]-a[3])=2a[3]≧0
 a[1]+a[3] -(a[2]-a[3])=(a[1]-a[2])+2a[3]≧0
 より、a[1]+a[2]=s[1]、a[1]+a[3]=s[2]

なので、


DATA 94,72,50,44,28,22
DIM S(6)
MAT READ S
LET T=0 !総和
FOR i=1 TO 6
   LET T=T+S(i)
NEXT i
PRINT T
LET A1=(T-2*S(1))/2
LET A2=S(1)-A1
LET A3=S(2)-A1
PRINT A1;A2;A3
END


 

Re: 和と差から復元する

 投稿者:山中和義  投稿日:2014年 8月14日(木)06時29分58秒
  > No.3455[元記事へ]

2014年度 女子学院中学 入学試験問題(算数1)
第1問の(4)
異なる4つの整数があり、それらの2つずつの数の和をすべてもとめると、30,37,38,41,42,49です。
4つの数のうち、一番小さい数と一番大きい数の和は □ で、
4つの数は小さい順に、□,□,□,□ です。

答え 連立方程式
4つの整数をa<b<c<dとする。
C(4,2)=6通りの和の大小関係は、
 a+b<a+c<a+d<b+d<c+d
      a+c<b+c<b+d
となる。
これより、
 1番目に小さい和(a+b)、2番目に小さい和(a+c)
 2番目に大きい和(b+d)、1番目に大きい和(c+d)
は確定されるが、a+dとb+cの大小は不明である。


DATA 30,37,38,41,42,49 !和 ※小さい順
DIM S(6)
MAT READ S

DIM A(4,4),x(4),b(4) !連立方程式 Ax=b
DATA 1,1,0,0 !1番目に小さい和a+b
DATA 1,0,1,0 !2番目に小さい和a+c
DATA 1,0,0,1 !1番小さい数と1番大きい数との和a+d
DATA 0,0,1,1 !1番目に大きい和c+d
MAT READ A

LET b(1)=S(1)
LET b(2)=S(2)
LET b(3)=S(3)
LET b(4)=S(6)

DIM iA(4,4) !解く
MAT iA=INV(A)
MAT x=iA*b
MAT PRINT x; !4つの数


!もう1つの候補について

LET b(3)=S(4)
MAT x=iA*b
MAT PRINT x; !4つの数

END



答え
4つの整数をa<b<c<dとする。
6つの和は、a+b,a+c,a+d,b+c,b+d,c+dである。
6つの和をすべて足すと、3×(a+b+c+d)なので、4つの整数の和は、(30+37+38+41+42+49)/3=79
また、a+b<a+c<a+d<b+d<c+d、a+c<b+c<b+dより、a+b=30,a+c=37,b+d=42,c+d=49である。

a+d=41と仮定すると、(a+b)+(a+c)+(a+d)=2a+(a+b+c+d)=2a+79=30+37+41=108 ∴a=18.5
整数の和は整数なので、これは不適である。

a+d=38と仮定すると、(a+b)+(a+c)+(a+d)=2a+(a+b+c+d)=2a+79=30+37+38=105 ∴a=13
このとき、
a+b=30より、b=17
a+c=37より、c=24
a+d=38より、d=25
(終り)



-------------------------------------------------

問題
2けたの整数が4つあります。
この中の2つの数の和と差を、大きい順にすべて書き出したところ、
 93,83,81,49,47,46,44,37,34,12,10,2
となりました。
4つの整数をもとめなさい。

答え
3つの数を大きい順に、a[1],a[2],a[3],a[4]とする。
和と差を大きい順に、s[1],s[2],s[3],s[4],…,s[12]とする。
和と差は、
 a[1]+a[2]            ←
 a[1]     +a[3]       ←
 a[1]          +a[4]
      a[2]+a[3]
      a[2]     +a[4]
           a[3]+a[4]
 a[1]-a[2]
 a[1]     -a[3]
 a[1]          -a[4]
      a[2]-a[3]       ←
      a[2]     -a[4]
           a[3]-a[4]
である。
総和は、6a[1]+4a[2]+2a[3]=Σs[k]
いま、a[1]+a[2]=s[i]とa[1]+a[3]=s[j]を選んだとすると、
総和は、4s[i]+2s[j]=Σs[k]と表される。
また、a[2]-a[3]=s[i]-s[j]
そこで、a[2]+a[3]=s[k]を選んだとすると、
a[2]=(s[k]+(s[i]-s[j]))/2、a[3]=(s[k]-(s[i]-s[j]))/2
よって、a[1]=s[i]-a[2]
a[1]-a[2]とa[1]-a[3]が存在することを確認して、a[1],a[2],a[3]を確定する。
続いて、a[1]+a[4]=s[p]を選んだとすると、a[4]=a[p]-a[1]
a[1]+a[2]≧a[1]+a[3]≧a[2]+a[3]、a[1]+a[3]≧a[1]+a[4]に注意する。


DATA 93,83,81,49,47,46,44,37,34,12,10,2
DIM S(12)
MAT READ S
LET T=0 !総和
FOR i=1 TO 12
   LET T=T+S(i)
NEXT i
PRINT T
FOR i=1 TO 10 !a[1]+a[2]
   FOR J=i+1 TO 11 !a[1]+a[3]
      IF 4*S(i)+2*S(J)=T THEN
         PRINT S(i);S(J) !debug

         FOR K=J+1 TO 12 !a[2]+a[3]
            LET W=S(i)-S(J)
            IF MOD(S(K)+W,2)=0 THEN !a[2]とa[3]の偶奇は一致する

               LET B=(S(K)+W)/2
               LET C=(S(K)-W)/2
               LET A=S(i)-B

               IF C>=10 THEN

                  FOR X=1 TO 12 !a[1]-a[2]を確認する
                     IF NOT(X=i OR X=J) THEN
                        IF A-B=S(X) THEN EXIT FOR
                     END IF
                  NEXT X
                  IF X<=12 THEN
                     FOR Y=1 TO 12 !a[1]-a[3]を確認する
                        IF NOT(Y=i OR Y=J OR Y=X) THEN
                           IF A-C=S(Y) THEN EXIT FOR
                        END IF
                     NEXT Y
                     IF Y<=12 THEN
                        PRINT S(K) !debug

                        FOR P=J+1 TO 12 !a[1]+a[4]
                           IF NOT(P=K OR P=X OR P=Y) THEN
                              LET D=S(P)-A
                              IF D>=10 THEN PRINT A;B;C;D
                           END IF
                        NEXT P

                     END IF
                  END IF

               END IF

            END IF
         NEXT K

      END IF
   NEXT J
NEXT i
END



出題を算数の範囲とすると、すなわち、負の数を扱わない場合、

a[1]≧a[2]≧a[3]≧a[4]≧0とすると、
a[1]+a[2]≧a[1]+a[3]≧a[1]+a[4]≧a[2]+a[4]≧a[3]+a[4]
a[1]+a[3]≧a[2]+a[3]≧a[2]+a[4]
a[1]+a[3] -(a[1]-a[2])=a[2]+a[3]≧0
a[1]+a[3] -(a[1]-a[3])=2a[3]≧0
a[1]+a[3] -(a[1]-a[4])=a[3]+a[4]≧0
a[1]+a[3] -(a[2]-a[3])=(a[1]-a[2])+2a[3]≧0
a[1]+a[3] -(a[2]-a[4])=(a[1]-a[2])+a[3]+a[4]≧0
a[1]+a[3] -(a[3]-a[4])=a[1]+a[4]≧0
より、
a[1]+a[2]=s[1]、a[1]+a[3]=s[2]

 

Re: 和と差から復元する

 投稿者:山中和義  投稿日:2014年 8月14日(木)10時15分32秒
  > No.3459[元記事へ]

問題
5つの数があります。
この中の2つを選んで和をつくると、小さい順に、
 7,10,11,11,12,14,15,15,18,19
となりました。
5つの数をもとめなさい。


「3つの数」と同様に、鮮やかに解けます。


DATA 7,10,11,11,12,14,15,15,18,19
DIM S(10)
MAT READ S
LET T=0 !総和
FOR i=1 TO 10
   LET T=T+S(i)
NEXT i
PRINT T
DATA 1,1,0,0,0
DATA 1,0,1,0,0
DATA 0,0,1,0,1
DATA 0,0,0,1,1
DATA 1,1,1,1,1
DIM A(5,5),x(5),b(5) !Ax=b
MAT READ A
LET b(1)=S(1) !1番目に小さい
LET b(2)=S(2) !2番目に小さい
LET b(3)=S(9) !2番目に大きい
LET b(4)=S(10) !1番目に大きい
LET b(5)=T/4 !和
DIM iA(5,5)
MAT iA=INV(A)
MAT x=iA*b
MAT PRINT x;
END



そのうちの3つを選んで和をつくる。


DATA 35,46,47,48,49,49,51,60,62,63
DIM S(10)
MAT READ S
LET T=0 !総和
FOR i=1 TO 10
   LET T=T+S(i)
NEXT i
PRINT T
DATA 1,1,1,0,0
DATA 1,1,0,1,0
DATA 0,1,0,1,1
DATA 0,0,1,1,1
DATA 1,1,1,1,1
DIM A(5,5),x(5),b(5) !Ax=b
MAT READ A
LET b(1)=S(1) !1番目に小さい
LET b(2)=S(2) !2番目に小さい
LET b(3)=S(9) !2番目に大きい
LET b(4)=S(10) !1番目に大きい
LET b(5)=T/6 !和
DIM iA(5,5) !連立方程式を解く
MAT iA=INV(A)
MAT x=iA*b
MAT PRINT x; !解
END

 

戻る