VBS编程题!100块钱换钱......

来源:百度知道 编辑:UC知道 时间:2024/05/29 17:33:15
原题:
100元钱换成10元,5元,2元,1元,每种至少一张,总共换40张,求有多少种换法?

下面是我编的,不知道对不对!
MsgBox("开始计算")

'求a,b,c,d的范围(最大值)
c=10+5+2+1
az=(100-(100-c) Mod 10)/10
bz=(100-(100-c) Mod 5)/5
cz=(100-(100-c) Mod 2)/2
dz=(100-(100-c) Mod 1)/1

s=0

'循环计算
For a=1 To az
For b=1 To bz
For c=1 To cz
For d=1 To dz
If 10*a+5*b+2*c+d=100 And a+b+c+d=40 Then
s=s+1
End If
Next
Next
Next
Next

MsgBox("一共有"+CStr(s)+"种换法")

是正确的。

这个应该快些(减少了一个For语句):
For i = 1 To 10
For j = 1 To 20
For k = 1 To 50
If i * 10 + j * 5 + k * 2 + (40 - i - j - k) = 100 And (i + j + k) < 40 Then s = s + 1
Next
Next
Next
MsgBox "共" & s & "种换法。"