在某次实弹射击训练中,班长将十个战士围成一圈发子弹。首先,班长给第一个战士10颗,第二个战士2颗,第三个战士8颗,第四个战士22颗,第五个战士16颗,第六个战士4颗,第七个战士10颗,第八个战士6颗,第九个战士14颗,第十个战士20颗。然后按如下方法将每个战士手中的子弹进行调整:所有的战士检查自己手中的子弹数,如果子弹数为奇数,则向班长再要一颗。然后每个战士再同时将自己手中的子弹分一半给下一个战士(第10 个战士将手中的子弹分一半给第1个战士)。问需要多少次调整后,每个战士手中的子弹数都相等?每人各有多少颗子弹?
要求:
1、快速输出调整次数,以及最后战士手中的子弹数
2、按照客户要求输出第几轮调整后,各战士手中的子弹数
客户输入格式有:
a.查询某轮次调整后各战士手中的子弹数
X
b.查询某几轮次调整后各战士手中的子弹数
X1,X2,X3,..,Xn
c.查询连续几轮的情况
Xa-Xb
d.综合b、c的复合型查询
X1,Xa-Xb,...,Xn
要求结果的输出格式为:
0 10 2 8 22 16 4 10 6 14 20 各战士手中原始的子弹数
1 xx xx xx xx xx xx xx xx xx xx 第1轮各战士手中的子弹数
2 xx xx xx xx xx xx xx xx xx xx 第2轮各战士手中的子弹数
……
n xx xx xx xx xx xx xx xx xx xx 最后一轮各战士手中的子弹数(应相等) 求助用VB编写该程序。。完成要求1和2
要求:
1、快速输出调整次数,以及最后战士手中的子弹数
2、按照客户要求输出第几轮调整后,各战士手中的子弹数
客户输入格式有:
a.查询某轮次调整后各战士手中的子弹数
X
b.查询某几轮次调整后各战士手中的子弹数
X1,X2,X3,..,Xn
c.查询连续几轮的情况
Xa-Xb
d.综合b、c的复合型查询
X1,Xa-Xb,...,Xn
要求结果的输出格式为:
0 10 2 8 22 16 4 10 6 14 20 各战士手中原始的子弹数
1 xx xx xx xx xx xx xx xx xx xx 第1轮各战士手中的子弹数
2 xx xx xx xx xx xx xx xx xx xx 第2轮各战士手中的子弹数
……
n xx xx xx xx xx xx xx xx xx xx 最后一轮各战士手中的子弹数(应相等) 求助用VB编写该程序。。完成要求1和2
解决方案 »
- 。。。关于VB调用Delphi写的DLL中pchar类型的问题。
- vb6怎样获得其它应用程序中LISTBOX中的内容??
- VB程序打包后部分电脑无法安装. 奇怪???
- 用ADO方法如何才能退出时不出现出错提示?
- 如何判断一个位图文件中是否有圆?
- 谁能解释一下在MSHFlexGrid1控件中的毛病。
- 如何从Word文档里读取某个位置的值,多后写进Excel文档里的某个位置
- 请问如何实现“按Web页查看”的操作?
- 怎樣得到正在運行程序的窗體中的控件的"name"!
- 怎样是窗体始终位于最前?
- 好心人帮下很小的忙哦!不好意思,没分了。。。
- Implements IObjectSafety是什么意思啊!
Dim j As Integer
a0 = Array(0, 10, 2, 8, 22, 16, 4, 10, 6, 14, 20)
a1 = a0
Do Until a1(1) = a1(2) And a1(2) = a1(3) And a1(3) = a1(4) And a1(4) = a1(5) And a1(5) = a1(6) And a1(6) = a1(7) And a1(7) = a1(8) And a1(8) = a1(9) And a1(9) = a1(10)
For i = 1 To 10
If a1(i) Mod 2 = 1 Then
a1(i) = a1(i) + 1
End If
Next i
a0 = a1
For j = 2 To 10
a1(j) = a1(j) + a0(j - 1) / 2
Next j
a1(1) = a1(1) + a0(10) / 2
a1(0) = a1(0) + 1
a0 = a1
Loop
感觉算法没问题,怎么老是溢出。
明天再研究。
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
a0 = Array(0, 10, 2, 8, 22, 16, 4, 10, 6, 14, 20)
a1 = a0
Do Until a1(1) = a1(2) And a1(2) = a1(3) And a1(3) = a1(4) And a1(4) = a1(5) And a1(5) = a1(6) And a1(6) = a1(7) And a1(7) = a1(8) And a1(8) = a1(9) And a1(9) = a1(10)
a1 = a0
For i = 1 To 10
If a1(i) Mod 2 = 1 Then
a1(i) = a1(i) + 1
End If
Next i
a0 = a1
For j = 2 To 10
a1(j) = a1(j) / 2 + a0(j - 1) / 2
Next j
a1(1) = a1(1) / 2 + a0(10) / 2
a1(0) = a1(0) + 1
a0 = a1
Loop
For i = 0 To 10
Text1.Text = Text1.Text & "," & a1(i)
Next i
Text1.Text = Right(Text1.Text, Len(Text1) - 1)
End Sub
昨天晚上忘了每个战士手上的还减了一半,结果不对。
至于第N轮调整后,每个战士手中的子弹数,你只要将循环条件改一下就行了,
如果还有问题的话在提出来。