精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓...算法和基础...〓〓>>Re:请给出答案 :阶梯

主题:Re:请给出答案 :阶梯
发信人: hunter__fox(雁回西楼)
整理人: gzwsh(2002-01-08 19:51:21), 站内信件
7、有一阶梯,如果每跨2阶,最后余1阶,每步跨3阶,最后余2阶,每步跨5阶,最后余4阶,每步跨6阶,最后余5阶,每步跨7阶,正好到达阶梯顶。问阶梯至少有多少阶?
呵呵,这倒有点像"韓信点兵"啊。。。不过他老爷子点了半天都是剩下一个。。。呵呵
'此题有无数个解,你要不要全看?呵呵
Dim i As Integer
Dim m As Integer
i = 1
m = i * 7
Do
  m = i * 7
  If (m Mod 2) = 1 _
     And (m Mod 3) = 2 _
     And (m Mod 5) = 4 _
     And (m Mod 6) = 5 Then
    MsgBox Cstr(m)
    Exit Do
  End If
  i = i + 1
Loop

8、一个共有15个台阶的楼梯,从下面走到上面。一次只能迈一个台阶或两个台阶,并且不能后退,走完这个楼梯共有多少种方法。
在1步台阶时有1种走法(1),两步台阶时2种(11、2)三步时有3种(111、12、21)4 步时有5种(1111、112、121、211、22),规律已经有了:每一个台阶数的走法对应为比它少一步各种走法前加一个1步和比它少两步的走法前加一个2步,因此可构造一个递归函数:
Function 上台阶(n As Integer) As Long
  If n > 3 Then
    上台阶 = n
  Else
    上台阶 = 上台阶(n - 1) + 上台阶(n - 2)
  EndIf
End Function

9、某铁路线上共有10个车站,共需准备多少种车票(要求任两个车站之间都有往返车票)
因为要往返的票,寻么每一站发往其他站的票就是唯一的,各站需的车票数是总站数减一,则:
MsgBox Cstr(mFun(10))
Function mFun(n As Integer) As Long
  mFun = n * (n - 1)
End Function

实在不明白,这样的事为什么需要用编程来做?
10、编程找出三个三位数,它们分别是某三个两位数的平方,且1~9这九个数字在这三个三位数中各只允许出现一次。
三位数开平方,必须大于9且小于32
但10的平方是100,有0,11平方是121,1重复了,12平方是144,4重复了,从13开始吧。。。看这9个数是否都用上了,一个一个算有点费时间(是写代码费时间)就取个巧,看各位之和是不是45并且各位之积是不是1至9的累乘(362880),呵呵。。。反正是无解。。。
'此题无解
Dim x As Integer, y As Integer, z As Integer
Dim x2 As Integer, y2 As Integer, z2 As Integer
For x = 15 To 31
  x2 = x ^ 2
  For y = 14 To x - 1
    y2 = y ^ 2
    For z = 13 To y - 1
      z2 = z ^ 2
      If Int(x2 / 100) + (Int(x2 / 10) Mod 10) + (x2 Mod 10) + _
         Int(y2 / 100) + (Int(y2 / 10) Mod 10) + (y2 Mod 10) + _
         Int(z2 / 100) + (Int(z2 / 10) Mod 10) + (z2 Mod 10) = 45 _
         And _
         Int(x2 / 100) * (Int(x2 / 10) Mod 10) * (x2 Mod 10) + _
         Int(y2 / 100) * (Int(y2 / 10) Mod 10) * (y2 Mod 10) + _
         Int(z2 / 100) * (Int(z2 / 10) Mod 10) * (z2 Mod 10) = 362880 _
         Then
        MsgBox CStr(x2) & Chr(13) & CStr(y2) & Chr(13) & CStr(z2)
      End If
    Next z
  Next y
Next x



----
在代码天地里
我要做一个
猎狐者    

[关闭][返回]