1.a,b,c,d,e中的每一个要么总是说假话要么总是说真话,他们知道他们各是什么样的人
a说b是说谎者
b说c是说谎者
c说d是说谎者
d说e是说谎者
他们间最多可能有几个说谎者?3个
分析:T;说真话;L:说假话
只有如下两种情况
a:T,b:L,c:T,d:L,e:T
a:L,b:T,c:L,d:T,e:L
所以最多有3个说谎者
2.在她2007年的生日,MARY的年龄等于她出生年份的各个数字之和的两倍,她出生的年份共有几个?4个
分析:她的年龄最多56岁(2*(1+9+9+9)),所以从1950试到2007,为了方便,遍了一段代码,语言是Visual Basic(2005)
Public Class Null '不限定包含于的窗体,所以定窗体名称为空(Null)
Dim private_year As Integer = 1950
Dim calculated_year As ListBox
Private Sub calculate()
Do
If 2007 - private_year = 2 * Val((private_year.ToString.Substring(0,1)) + Val(private_year.ToString.Substring(1,1)) + Val(private_year.ToString.Substring(2,1)) + Val(private_year.ToString.Substring(3,1))) Then '从If到Then是一行
calculated_year.Items.Add(private_year)
End If
private_year = private_year + 1
Loop Until private_year >= 2007
End Sub
End Class
得到的结果是1959,1965,1971,2001四个年份
3.一个两位数等于它各个数字之和的三倍,这样的数有几个?1个
分析:设十位数为x,个位数为y (x,y∈Z 1≤x≤9 0≤y≤9)
列出方程
10x + y = 3 * (x + y)
7x = 2y
这个方程只有 x = 2,y = 7 这一个解
所以这样的数只有一个,27