找回密码
 加入
搜索
楼主: XXCP

一道计算题,无从下手.请高人指点迷律.

[复制链接]
发表于 2009-10-1 20:40:49 | 显示全部楼层
汗~~~

按软件!
不明白,按条目的话,完全不理按软件来计算,那~~怎么在软件上运行.

我以为兄台可以计算到1000条里,每条用到的时间(s), 我理解错误.
XXCP 发表于 2009-10-1 19:23

软件条目总数1000?
 楼主| 发表于 2009-10-1 21:08:15 | 显示全部楼层
软件条目总数1000?
netegg 发表于 2009-10-1 20:40


是1000啊,顶数上我没写错
发表于 2009-10-3 23:30:32 | 显示全部楼层
#cs ----------------------------------------------------------------------------

有1000个条目,
每个条目的内容检索时间为t1毫秒;每检索t2个条目,暂停检索t3毫秒;
软件每运行t4毫秒,暂停运行t5毫秒后继续运行.问:1000个条目,需要多长时间(秒)能检索完.

#ce ----------------------------------------------------------------------------
Global $tHowLong,$tUsed,$iItems
;$tHowLong    临时经过时间
;$tUsed    所用的时间毫秒
;$iItems 条目数量

Global $t1,$t2,$t3,$t4,$t5
$t0="题目作者"
;$t1t2t3t4t5   $t0出的变量,一般人不能理解
Dim $i
;$i 临时循环变量
sinit() ;初始化

For $i=1 to $iItems  ;循环$iItems次数来计算
        IndexItems() ;内容检索
        If Mod($i,2)=0 Then
                lfPause($t3,1) ;每检索t2个条目,暂停检索t3毫秒;
        EndIf
        
Next
MsgBox(0,$iItems&"条计算时间为",$tUsed / 1000) ;得到秒以和题目的问题相同单位


Func sInit($Fuckingt1t2t3t4t6="这种变量名就像在大便里挑黄豆")
        ;初始化所有变量
        $tUsed=0
        $tHowLong=0
        $iItems=1000
        $t1=1
        $t2=2
        $t3=3
        $t4=4
        $t5=5
EndFunc

Func lfPause($iTime,$AddLong);暂停
        ;题目上的  暂停运行  是否计算时间
        ;如果要计算时间那么$t4<$t5的话,软件永远处于暂停状态
        ;所以我只能理解为不计算
        If $AddLong=1 Then  
                $tHowLong=$tHowLong+$iTime
    EndIf
        $tUsed=$tUsed+$iTime
        
EndFunc

Func IndexItems()
        $tHowLong=$tHowLong+$t1
        ;软件每运行t4毫秒,暂停运行t5毫秒后继续运行
        If $tHowLong / $t4 >0 Then ;如果软件运行时间大于$t4则增加计算时间
                lfPause(Int($tHowLong / $t4)*$t5,0)
                $tHowLong=Mod($tHowLong,$t4);重置软件运行时间计数变量
        EndIf
        
        $tUsed=$tUsed+$t1
EndFunc

评分

参与人数 1金钱 +5 收起 理由
XXCP + 5 $t5会使t4,t3,t2,t1停止计数,但t5本身是计 ...

查看全部评分

发表于 2009-10-3 23:33:54 | 显示全部楼层
这种变态的题目,花我1个多小时
 楼主| 发表于 2009-10-8 21:22:42 | 显示全部楼层
没显示出来.


t3触发时,只会使t2,t1处于暂停计数状态,t4,t5仍然正常计数(有可能在T4秒数以内,t1,t2,t3N个循环可以完成,而不触发T5)

t4<t5不会使软件本身永远处于暂停.
t5触发时,会使t4,t3,t2,t1停止计数,但t5本身是计数状态;
有点郁闷..虽然没法交差,但仍然想把这题解出来..
 楼主| 发表于 2009-10-8 22:54:31 | 显示全部楼层
用akmm88 兄的方法套了一下:
        $iItems=5
        $t1=1
        $t2=2
        $t3=2
        $t4=3
        $t5=3

结果输出:$tUsed=18


我这样套的.
每条用1秒
每检索2条,暂检索2毫秒
每运行3毫秒,暂停运行3毫秒.
1{第1条}+(1+1+3+1){第2条}+1{第3条}+(1+1+3+1){第四条}+1{第五条}
去掉{},1+(1+1+3+1)+1+(1+1+3+1)+1=15毫秒.
--------------------------
1{第1条}+(1+1+3+1){第2条}+1{第3条}+(1+1+3+1){第四条}+1{第五条}
计数(1+1+3+1){第2条}时,触发t3,而T3只计数了1毫秒时,触发t4,等t5结束后还要等1毫秒(T3在T5触发前未完的计数),这是检索第2条时用的时间.
........
这样算下来,却只用了15.


和akmm88 兄提供的计数差3
不解.那3出在哪儿?
发表于 2009-10-15 11:57:44 | 显示全部楼层
用akmm88 兄的方法套了一下:
        $iItems=5
        $t1=1
        $t2=2
        $t3=2
        $t4=3
        $t5=3

结果输出:$tUsed=18


我这样套的.
每条用1秒
每检索2条,暂检索2毫秒
每运 ...
XXCP 发表于 2009-10-8 22:54


共5条 检索2条 共 2毫秒 又要暂停2毫秒,此时软件运行了4毫秒了>t4,需要暂停t5,也就是3毫秒,
到现在已经7毫秒了,继续,检索2条 共 2毫秒 又要暂停2毫秒,此时软件运行5秒,没暂停,得暂停3毫秒,余2毫秒,最后1条检索用1毫秒,软件运行又另1个3秒,需要暂停3秒. 刚好18毫秒.
发表于 2009-10-15 12:05:26 | 显示全部楼层
你说的多出3毫秒,就是 最后1个T4是否要是软件暂停,如果不用暂停的话
        If $tHowLong / $t4 >0 Then ;如果软件运行时间大于$t4则增加计算时间

                lfPause(Int($tHowLong / $t4)*$t5,0)

                $tHowLong=Mod($tHowLong,$t4);重置软件运行时间计数变量

        EndIf
在这个lfPause前加个判断$i是否=$iItems 需要把$i设置为全局变量.按题目来看,是需要暂停的,因为软件暂停将是答案无法提交,属于异步的,所以我觉得最后一个暂停是需要的.

评分

参与人数 1金钱 +5 收起 理由
XXCP + 5 好好去拜读一下.学习的过程很有意思.谢谢

查看全部评分

发表于 2009-10-15 12:19:29 | 显示全部楼层
t5触发时,会使t4,t3,t2,t1停止计数,但t5本身是计数状态;

t4
XXCP 发表于 2009-10-8 21:22

题目上可没说T5会使T4停止计数啊,当然逻辑上是必须停止计数的.

评分

参与人数 1金钱 +5 收起 理由
XXCP + 5 谢谢

查看全部评分

发表于 2009-10-15 14:06:28 | 显示全部楼层
......同学 好久没出现了嘛
 楼主| 发表于 2009-10-19 22:46:20 | 显示全部楼层
感谢akmm88憾慨解答.

按akmm88的法子去做T4与T5判断.
多谢各位朋友的帮忙.
发表于 2011-12-27 10:50:11 | 显示全部楼层
学习了!感谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-1 03:33 , Processed in 0.071413 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表