秤の問題

 投稿者:山中和義  投稿日:2013年 1月30日(水)12時57分9秒
  問題
金貨の入った袋が5袋ある。
4袋には10gの金貨が入っているが、1袋だけ9gの金貨が入っている。
グラム単位で量れる秤を1回だけ使って、どの袋が9gの金貨が入っているのか当てよ。

答え
それぞれの袋から、0,1,2,3,4枚とる。
全部10gなら、10x(0+1+2+3+4)=100gとなるが、9gのものがあるのでその分軽くなる。
100gよりAg軽かったら、A枚とった袋が9gである。
(終り)


LET N=5 !袋の個数
DATA 10,10,10,9,10 !A,B,C,D,Eの順に

DIM S(N)
MAT READ S
MAT PRINT S; !debug

LET T=0
FOR i=1 TO N
   LET T=T+S(i)*(i-1) !0,1,2,3,4
NEXT i
PRINT 10*(N-1)*N/2-T+1;"番目"



!その2 m進法

LET T=0
FOR i=1 TO N
   LET T=T+(S(i)-9)*2^(i-1) !1,2,4,8,16,…
NEXT i
PRINT T !debug

FOR i=1 TO N !A,B,C,D,Eの順に
   PRINT MOD(T,2); !0:9g、1:10gを表す
   LET T=INT(T/2)
NEXT i
PRINT



!その3 デジタル表示

LET T=0
FOR i=1 TO N
   LET T=T+S(i)*100^(N-i) !100^0,100^1,100^2,100^3,…
NEXT i
PRINT T;"番目"

END

 

天秤ばかりの問題

 投稿者:山中和義  投稿日:2013年 1月30日(水)17時18分48秒
  > No.2976[元記事へ]

問題
たくさんの塩があります。
ここに、天秤ばかりと、2gと7gの分銅がひとつずつあります。
天秤ばかりと分銅を使って、塩50gを量りなさい。

類題
140gの塩があります。
ここに、天秤ばかりと、2gと7gの分銅がひとつずつあります。
天秤ばかりと分銅を使って、塩を50gと90gに分割しなさい。

答え
不定方程式2x+7y=50の解のひとつは、(x,y)=(4,6)より、
2gの分銅で4回、7gの分銅で6回、計10回量ればよい。

量った塩を分銅として使う場合、
  左     右
  2+7+(0)   9  1回目
   7+(9)   16  2回目
+   (9+16) 25  3回目
-------------------
        50g
とすれば、3回となる。

回数は、max(x,y)<2^kを満たす最小のkとなる。
手順は、
 x=4=100[2]、y=6=110[2]なので、
  1 1
  0 1
  0 0
 と上位から順に並べる。(上記の表を参照のこと)
 これを元に、1のときに分銅を使い、量った塩の和と一緒に新しい塩を量っていく。
とすればよい。
(終り)


LET A=2 !ax+by=c
LET B=7
LET C=50

FOR X=0 TO INT(C/A) !非負の整数解
   LET Y=(C-A*X)/B
   IF Y=INT(Y) THEN
      PRINT "(x,y)=("; X; Y; ")"


      LET XX=X !手順を表示する
      LET YY=Y

      LET K=INT(LOG10(MAX(XX,YY))/LOG10(2))+1
      PRINT K;"回"

      LET S=0 !量った塩
      LET T=0
      LET R=2^(K-1) !2進法k桁へ ※上位から
      FOR J=K TO 1 STEP -1
         LET P=INT(XX/R) !k桁目
         LET Q=INT(YY/R)

         PRINT P;Q;"+"; S;T; "="; S+P;T+Q !表を表示する
         LET S=2*S+P
         LET T=2*T+Q

         LET XX=MOD(XX,R) !次へ
         LET YY=MOD(YY,R)
         LET R=R/2
      NEXT J
      PRINT
   END IF
NEXT X

END

 

Re: 秤の問題

 投稿者:山中和義  投稿日:2013年 2月 3日(日)14時07分44秒
  > No.2976[元記事へ]

問題
パチンコ玉が3個あります。外見では見分けはつきません。
そのうち2個は同じ重さで、1個だけ重さが少し違うことがわかっています。
ただし、重いか軽いかは不明です。
バネ秤を3回使って、この1個の玉を選び出してください。
また、2個の玉は何グラム、1個の玉は何グラムまで出してほしいのです。

答え
パチンコ玉をA,B,Cとして、その重さをa,b,cとする。
○は同じ重さ、●は少し違う重さを表すとして、
 a b c
 ○○●
 ○●○
 ●○○
以上の3通りである。

手法A:それまでの測定結果によって、次の回のはかり方を決める方法


LET a=1
LET b=2
LET c=2

LET w1=a
LET w2=b
PRINT "w1=";w1; "w2=";w2 !debug

IF w1=w2 THEN !cが偽
   LET w3=c
   PRINT "w3=";w3 !debug

   LET x=w1
   LET y=w3
   PRINT "x=";x; "y=";y; "偽C"
ELSE
   LET w3=c
   PRINT "w3=";w3 !debug

   IF w3=w1 THEN !bが偽
      LET x=w3
      LET y=w2
      PRINT "x=";x; "y=";y; "偽B"
   ELSEIF w3=w2 THEN !aが偽
      LET x=w2
      LET y=w1
      PRINT "x=";x; "y=";y; "偽A"
   ELSE
      PRINT "論理エラー"
   END IF
END IF

END



手法B:最初にすべての回のはかり方を決め、全結果から答えを出す方法


LET a=1
LET b=2
LET c=2

LET w1=a
LET w2=b
LET w3=c
PRINT "w1=";w1; "w2=";w2; "w3=";w3 !debug

IF w1=w2 THEN !cが偽
   LET x=w1
   LET y=w3
   PRINT "x=";x; "y=";y; "偽C"
ELSEIF w3=w1 THEN !aが偽
   LET x=w3
   LET y=w2
   PRINT "x=";x; "y=";y; "偽B"
ELSEIF w2=w3 THEN !bが偽
   LET x=w2
   LET y=w1
   PRINT "x=";x; "y=";y; "偽A"
ELSE
   PRINT "論理エラー"
END IF

END

 

Re: 秤の問題

 投稿者:山中和義  投稿日:2013年 2月 4日(月)10時21分58秒
  > No.2979[元記事へ]

> 問題
> パチンコ玉が3個あります。外見では見分けはつきません。
> そのうち2個は同じ重さで、1個だけ重さが少し違うことがわかっています。
> ただし、重いか軽いかは不明です。
> バネ秤を3回使って、この1個の玉を選び出してください。
> また、2個の玉は何グラム、1個の玉は何グラムまで出してほしいのです。

手法A:それまでの測定結果によって、次の回のはかり方を決める方法

●パチンコ玉が4個の場合

LET a=1
LET b=2
LET c=2
LET d=2

LET w1=a
LET w2=b+c
PRINT "w1=";w1; "w2=";w2 !debug

IF 2*w1=w2 THEN !dが偽 ※a=b=cより
   LET w3=d
   PRINT "w3=";w3 !debug

   LET x=w1 !a
   LET y=w3 !d
   PRINT "x=";x; "y=";y; "偽D"
ELSE
   LET w3=b
   PRINT "w3=";w3 !debug

   IF w3=w1 THEN !cが偽 ※a=bより
      LET x=w1 !a
      LET y=w2-w3 !(b+c)-b
      PRINT "x=";x; "y=";y; "偽C"
   ELSEIF 2*w3=w2 THEN !aが偽 ※b=cより、w3=w2-w3 ∴2*w3=w2
      LET x=w3 !b
      LET y=w1 !a
      PRINT "x=";x; "y=";y; "偽A"
   ELSEIF w1=w2-w3 THEN !bが偽 ※a=cより、w1=w2-w3
      LET x=w1 !a
      LET y=w3 !b
      PRINT "x=";x; "y=";y; "偽B"
   ELSE
      PRINT "論理エラー"
   END IF
END IF

END


●パチンコ玉が5個の場合

LET a=2
LET b=2
LET c=1
LET d=2
LET e=2

LET w1=a+b
LET w2=c+d
PRINT "w1=";w1; "w2=";w2 !debug

IF w1=w2 THEN !eが偽 ※a=b=c=dより
   LET w3=e
   PRINT "w3=";w3 !debug

   LET x=w1/2 !x=w2/2
   LET y=w3
   PRINT "x=";x; "y=";y; "偽E"
ELSE
   LET w3=a+c+e
   PRINT "w3=";w3 !debug

   IF 2*w3=3*w1 THEN !e=a=c=bより、w3=a+c+e=3e、w1=a+b=2e
      LET x=w1/2 !x=w3/3
      LET y=w2-x
      PRINT "x=";x; "y=";y; "偽D"
   ELSEIF 2*w3=3*w2 THEN !e=a=c=dより、w3=a+c+e=3e、w2=c+d=2e
      LET x=w2/2 !x=w3/3
      LET y=w1-x
      PRINT "x=";x; "y=";y; "偽B"
   ELSEIF 2*(w3-w2)=w1 THEN !e=b=d=aより、w3-w2=(a+c+e)-(c+d)=a+e-d=e、w1=a+b=2e
      LET x=w1/2 !x=w3-w2
      LET y=w2-x !y=w3-w1
      PRINT "x=";x; "y=";y; "偽C"
   ELSEIF 2*(w3-w1)=w2 THEN !e=b=d=cより、w3-w1=(a+c+e)-(a+b)=c+e-b=e、w2=c+d=2e
      LET x=w2/2 !x=w3-w1
      LET y=w1-x !y=w3-w2
      PRINT "x=";x; "y=";y; "偽A"
   ELSE
      PRINT "論理エラー"
   END IF
END IF

END


●パチンコ玉が6個の場合

LET a=2
LET b=2
LET c=2
LET d=2
LET e=3
LET f=2

LET w1=a+b+c+d
LET w2=a+b    +e
PRINT "w1=";w1; "w2=";w2 !debug

IF 3*w1=4*w2 THEN !eが偽 ※a=b=c=d=eより
   LET w3=f
   PRINT "w3=";w3 !debug

   LET x=w1/4 !x=w2/3
   LET y=w3
   PRINT "x=";x; "y=";y; "偽F"
ELSE
   LET w3=a+c
   PRINT "w3=";w3 !debug

   LET p=w1-w2 !w1-w2=(a+b+c+d)-(a+b+e)=c+d-e
   LET q=w2-w3 !w2-w3=(a+b+e)-(a+c)=b+e-c
   LET r=w1-w3 !w1-w3=(a+b+c+d)-(a+c)=b+d
   PRINT "p=";p; "q=";q; "r=";r !debug

   IF p=q THEN !f=b=c=d=eより、p=c+d-e=f+f-f=f、q=b+e-c=f+f-f=f
      LET x=p
      LET y=w3-x
      PRINT "x=";x; "y=";y; "偽A"
   ELSEIF 2*p=w3 THEN !f=a=c=d=eより、p=c+d-e=f+f-f=f、w3=a+c=f+f=2f
      LET x=p
      LET y=r-x
      PRINT "x=";x; "y=";y; "偽B"
   ELSEIF 3*r=2*w2 THEN !f=a=b=d=eより、r=b+d=f+f=2f、w2=a+b+e=f+f+f=3f
      LET x=r/2
      LET y=w3-x
      PRINT "x=";x; "y=";y; "偽C"
   ELSEIF 2*w2=3*w3 THEN !f=a=b=c=eより、w2=a+b+e=f+f+f=3f、w3=a+c=f+f=2f
      LET x=w3/2
      LET y=r-x
      PRINT "x=";x; "y=";y; "偽D"
   ELSEIF 2*w1=4*w3 THEN !f=a=b=c=dより、w1=a+b+c+d=f+f+f+f=4f、w3=a+c=f+f=2f
      LET x=w1/4
      LET y=w2-2*x
      PRINT "x=";x; "y=";y; "偽E"
   ELSE
      PRINT "論理エラー"
   END IF
END IF

END

 

Re: 秤の問題

 投稿者:山中和義  投稿日:2013年 2月 5日(火)11時15分29秒
  > No.2980[元記事へ]

> 問題
> パチンコ玉が6個あります。外見では見分けはつきません。
> そのうち5個は同じ重さで、1個だけ重さが少し違うことがわかっています。
> ただし、重いか軽いかは不明です。
> バネ秤を3回使って、この1個の玉を選び出してください。
> また、5個の玉は何グラム、1個の玉は何グラムまで出してほしいのです。>

> 手法A:それまでの測定結果によって、次の回のはかり方を決める方法

近似解 3組の計測

2個ずつ取り出して3組をつくり、それぞれを量る。
(a,b)、(c,d)、(e,f)として、W1=a+b, W2=c+d, W3=e+f
同じ値のものが存在するので、他と違う1組の中の1個が、重さが少し違うパチンコ玉である。
よって、その組の1つを取り出して量る。たとえば、(e,f)とすると、W4=e
2*W4=W1のとき、x=W4(=W1/2=W2/2), y=W3-W4
2*W4≠W1のとき、x=W3-W4(=W1/2=W2/2), y=W4
したがって、4回となる。


この手法を使うと、7個の場合は、
2個ずつ取り出して3組をつくり、それぞれを量る。
(a,b)、(c,d)、(e,f)として、W1=a+b, W2=c+d, W3=e+f
・すべて同じ値(W1=W2=W3)のとき、残った1個が重さが少し違うパチンコ玉である。
 W4=gとして、x=W1/2(=W2/2=W3/2), y=W4
・他と違う1組が存在したとき、その中の1個が、重さが少し違うパチンコ玉である。
 たとえば、W3とすると、W4=e
  2*W4=W1のとき、x=W4(=W1/2=W2/2), y=W3-W4
  2*W4≠W1のとき、x=W3-W4(=W1/2=W2/2), y=W4
したがって、4回となる。
 

戻る