主题:[讨论]求解题
shuangyan
[专家分:0] 发布于 2006-03-24 11:02:00
某宾馆有100间客房,30个服务员,客房门牌按劳1—100编排。如果第一个服务员将民有的门打开 ,第二个服务员将所有门牌号是2的倍数的门关上,第三个服务员将所有门牌号是3的倍数的站打开,第四个服务员将所有门牌号是4的倍数的门关上,……问当第30个服务员如上操作后,有哪几个门是打开的,哪几个门是关闭的,打开和关闭的门又各有几个?
回复列表 (共5个回复)
沙发
p1s [专家分:4100] 发布于 2006-03-24 11:42:00
做一个数组a(1)-a(100)表示门的开闭
用外循环表示三十个服务员每次的开闭门
内存环表示开启或关闭符合条件的门
最后统计数组中的结果即可
板凳
AWT8GUI [专家分:320] 发布于 2006-03-25 10:00:00
以前我做过这类题目,不守我现在在学C了,程序可能写不出来了.
3 楼
moz [专家分:37620] 发布于 2006-03-25 11:23:00
很多没有中文的DOS,所以就不用中文了,用0和1吧,0就是关闭,1就是打开。
s$=space$(100)
for i=30 to 1 step -1
for j=i to 100 step i
if mid$(s$,j,1)=chr$(32) then mid$(s$,j,1)=chr$(i mod 2 + 48)
next j,i
print s$
4 楼
moz [专家分:37620] 发布于 2006-03-25 11:26:00
犯错误了,我们不能过份的追求简洁,还要顾及效率,改一改:
s$=space$(100)
for i=30 to 1 step - 1
a$=chr$(i mod 2 + 48)
for j=i to 100 step i
if mid$(s$,j,1)=chr$(32) then mid$(s$,j,1)=a$
next j,i
print s$
5 楼
shuangyan [专家分:0] 发布于 2006-03-27 14:56:00
我想知道你这个程序运行了没有呀,我怎么看不大懂呢,请你分析一下,如果可行的话,我给你多加点分。决没问题
我来回复