| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 787 人关注过本帖
标题:一道经典的数学推理题!
只看楼主 加入收藏
乱弹琴
Rank: 1
等 级:新手上路
威 望:1
帖 子:1665
专家分:0
注 册:2006-3-7
收藏
 问题点数:0 回复次数:5 
一道经典的数学推理题!
有12个外观一模一样的小球,其中11个质量是相等的,有且只有1个和其他11个质量不一样。现在给你一台天平,只许你称3次,你怎样把质量不一样的那个小球找出来???
搜索更多相关主题的帖子: 经典的 推理题 
2006-08-26 14:06
xupeng
Rank: 1
等 级:新手上路
帖 子:4049
专家分:0
注 册:2006-2-12
收藏
得分:0 

Option Explicit

Private Sub Form_Load()
Dim a(11) As Long
Dim i As Long, b As Long, Result As Long
10:
Randomize

'正品的重量为5,次品为6或4
For i = 0 To 11
a(i) = 5
Next
b = Rnd * 11
a(b) = IIf(Rnd * 3 > 2, 6, 4)



Dim c1&, c2&, c3& '分别为第一次,第二次,第三次的比较结果


c1 = Cmp(a(0) + a(1) + a(2) + a(3), a(4) + a(5) + a(6) + a(7))
If c1 = 0 Then
'在8,9,10,11(这时0-7是好的)
c2 = Cmp(a(8), a(10))
If c2 = 0 Then
'8和10相等,则表示在 9 或 11
c3 = Cmp(a(9), a(0))
If c3 = 0 Then
Result = 11
Else
Result = 9
End If
Else '在8 或 10
c3 = Cmp(a(8), a(0))
If c3 = 0 Then
Result = 10
Else
Result = 8
End If
End If
Else
'在0,1,2,3,4,5,6,7

c2 = Cmp(a(0) + a(5) + a(6) + a(7), a(4) + a(8) + a(9) + a(10))
If c2 = 0 Then
'在1,2,3
c3 = Cmp(a(1), a(2))
If c3 = 0 Then
'如果1和2相等,则表示第3个球是有问题的
Result = 3

ElseIf (c3 = c1) Then
'好好想一下,我都不知如何表达是好....
Result = 1

Else
Result = 2
End If
ElseIf c2 <> c1 Then
'由于移动了5,6,7,而8,9,10是好的,所以得出坏球在 5,6,7
c3 = Cmp(a(5), a(6))
If c3 = 0 Then
Result = 7
ElseIf c3 = c1 Then
'5,6,7一开始是在右边的,这里与1,2,3稍有不同
Result = 6
Else
Result = 5
End If
Else
'在0,4
c3 = Cmp(a(0), a(8))
If c3 = 0 Then
Result = 4
Else
Result = 0
End If
End If
End If

Dim s As String
s = "次品:" & b & vbCrLf
s = s & "结果:" & Result & vbCrLf & vbCrLf
s = s & "清单:" & vbCrLf
For i = 0 To 11
s = s & Format(i, "(00)") & a(i) & vbCrLf
Next
s = s & "要继续吗?"
If MsgBox(s, vbYesNo + vbInformation) = vbYes Then
GoTo 10
End If
Unload Me
End Sub
'--------------------------------------------------------------
'Cmp函数当作一把天平,如果左边重返回1,右边重返回-1,相等返回0
Private Function Cmp(ByVal a As Long, ByVal b As Long) As Long
If a > b Then
Cmp = 1
ElseIf a < b Then
Cmp = -1
Else
Cmp = 0
End If
End Function


反清复明 http://xupeng.
2006-08-26 14:09
xupeng
Rank: 1
等 级:新手上路
帖 子:4049
专家分:0
注 册:2006-2-12
收藏
得分:0 

语言叙述:
解:
设标准小球质量为w,将12个小球依次编号为a1,a2,...,a12,分组为:
  a1,a2 ,a3 ,a4 为A1组
a5,a6 ,a7 ,a8 为A2组
a9,a10,a11,a12 为A3组

==(第一次)1选定任意2组--取A1,A2进行比较,如果
1 A1=A2
  则A1/A2组8个小球a1,a2,...,a8均为正常小球,质量均为w
则A3组为异常球组
重新分组为:
B1:a9 a10
B2:a11 a1
B3:a12 a2

====(第二次)取B2 B3 任意1组--B2 与 B1 进行比较,如果
1.1 B1=B2 则 B1 B2 为正常组,B3(a11,a2)为异常组,因为a2为正常球,所以异常球为a12
1.2 B1<B2 或者 B1>B2,则 B3 为正常组,以B1<B2为例说明
表达式 EXP0:a9+a10 < a11 +a1

========(第三次)取a9 a10 进行比较,如果
1.2.1 a9 = a10 则 a11 为异常球
1.2.2 a9 != a10 则 a11 为正常球,根据 EXP0,异常球质量小于正常球,即
a9 与 a10 轻者为异常球

2  A1<A2 或者 A1>A2,则A3为正常组;以A1<A2说明:
  得表达式1: EXP1: a1+a2+a3+a4<a5+a6+a7+a8  
表达式2: EXP2: a9=a10=a11=a12=w 
重新分组为:
B1:a1,a2,a3
B2:a4,a5,a9
B3:a6,a7,a8

====(第二次)取B1或B3与B2比较,以B1为例说明:

2.1 B1<B2 则B3为正常组
即:
EXP4: a1+a2+a3 < a4+a5+a9
EXP5: a6=a7=a8=w
其中 a9=w
关联 EXP1: a1+a2+a3+a4< a5+a6+a7+a8
相减        a4 < -a4 + 2w
a4 < w
则异常球为  a4
2.2 B1>B2 则B3为正常组
即:
EXP6: a1+a2+a3 > a4+a5+a9
EXP7: a6=a7=a8=w
其中 a9=w
关联 EXP1: a1+a2+a3+a4< a5+a6+a7+a8 
转换 EXP1: -a1-a2-a3-a4> -a5-a6-a7-a8
相加 -a4> a4-2w
a4> w
则异常球为  a4

2.3 B1=B2 则B3为异常组
得表达式3:  EXP3: a1=a2=a3=a4=a5=w
关联      EXP1: a1+a2+a3+a4<a5+a6+a7+a8
得 3w<a6+a7+a8
即推出如下结论
1) 异常球质量大于正常球
2) 异常球在B3(a6,a7,a8)中
========(第三次)比较任意的两个--a6,a7,如果
  a6=a7,则异常球为 a8
a6<a7, 则异常球为 a7
a6>a7, 则异常球为 a6

这是爱因.斯坦的问题吧


反清复明 http://xupeng.
2006-08-26 14:11
乱弹琴
Rank: 1
等 级:新手上路
威 望:1
帖 子:1665
专家分:0
注 册:2006-3-7
收藏
得分:0 
哈哈,高

男人的謊言可以騙女人的壹夜! 女人的謊言可以騙男人的壹生!
2006-08-26 14:25
kfwangguan
Rank: 1
等 级:新手上路
帖 子:411
专家分:0
注 册:2005-7-17
收藏
得分:0 
老师讲过这个,能不能把那个原理说一下

2006-08-26 19:04
魔幻星空
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2006-8-24
收藏
得分:0 

明白了


2006-08-27 15:15
快速回复:一道经典的数学推理题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026022 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved