投稿者:山中和義
投稿日: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
|
|
|
投稿者:山中和義
投稿日: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
|
|
|
投稿者:山中和義
投稿日: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
|
|
|
投稿者:山中和義
投稿日: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回となる。
|
|
|
戻る