VBS脚本:计算还需要净胜多少局才能让自己的扫雷胜率增长1%

程序说明

作为一个扫雷爱好者,今天突然想做一个脚本,看看自己还剩下多少局才能让胜率增长1个百分点

221555_bg9K_1425762.png

脚本通过已玩游戏数和已胜游戏数,推算还需要连胜多少局游戏才能让自己的获胜率增长一个百分点

获胜率是已胜游戏除以已玩游戏的商精确到小数点后两位后乘以百分之百,小数点后两位以后的数字全部舍去

比如72/359=0.20055710306407,因此当前的获胜率是20%

赢一局,胜率为73/360 = 0.20277777777778→胜率20%

赢两局,胜率为74/361 = 0.20498614958449→胜率20%

赢三局,胜率为75/362 = 0.20718232044199→胜率20%

赢四局,胜率为76/363 = 0.20936639118457→胜率20%

赢五局,胜率为77/364 = 0.21153846153846→胜率21%

因此,以当前状态再连胜5局,就可以让胜率增长到21%

在两个InputBox中输入359和72后,脚本会提示这样一个MsgBox

222341_VmUv_1425762.png

需要注意的是

1)如果不是全胜,那么胜率是无法达到100%的,也就是如果有失败场次,99%就是最高胜率了

2)VBS脚本通过InputBox输入的数字,要先经过IsNumeric判断,再经过CInt转换为数字,才能放心使用

脚本代码

Option Explicit
'On Error Resume Next

Dim Input1 : Input1 = InputBox("已玩游戏数", "输入参数1", VbOKOnly)
Dim Input2 : Input2 = InputBox("已胜游戏数", "输入参数1", VbOKOnly)

'输入合法性检验

If Not IsNumeric(Input1) Or Not IsNumeric(Input2) Then
    MsgBox "输入非法,应为数字", VbOKOnly + VbCritical, "警告"
    Wscript.Quit
End If

Dim GamePlayed : GamePlayed = CInt(Input1)
Dim GameWon : GameWon = CInt(Input2)

If GamePlayed <= 0 Or GameWon < 0 Then
    MsgBox "已胜游戏数应不小于0,已玩游戏数应大于0", VbOKOnly + VbExclamation , "警告"
    Wscript.Quit
End If

If GamePlayed < GameWon Then
    MsgBox GamePlayed & "<" & GameWon
    MsgBox "已胜游戏数应小于等于已玩游戏数", VbOKOnly + VbCritical, "警告"
    Wscript.Quit
ElseIf GamePlayed = GameWon Then
    MsgBox "胜率到了100%", VbOKOnly + VbInformation, "通知"
    Wscript.Quit
ElseIf GameWon * 100 \ GamePlayed = 99 Then
    MsgBox "胜率到了99%,你的胜率无法增长了", VbOKOnly + VbInformation, "通知"
    Wscript.Quit
End If

'模拟玩一局赢一局的过程
Dim Counter : Counter = 1
Do
    If (GameWon + Counter - 1) * 100 \ (GamePlayed + Counter - 1) < _
        (GameWon + Counter) * 100 \ (GamePlayed + Counter) Then
        Exit Do
    Else
        Counter = Counter + 1
    End If
Loop 

MsgBox "还需要赢" & Counter & "局才能提升1%胜率", VbOKOnly + VbInformation, "通知"
Wscript.Quit

END

转载于:https://my.oschina.net/Tsybius2014/blog/362078

问题描述】 欧洲冠军联赛常被誉为全世界最具影响力的俱乐部级赛事。在比赛的小组赛阶段,欧洲的各个足球俱乐部被分为八个小组,每个小组中四支球队。每个小组中的球队按照如下规则排序: 球队会根据比赛结果获得积分。一场比赛的双方被称为主队和客队。如果其中一方进球数多于另一方,那么进球较多的一方获得3 分,另一方获得0 分。如果双方打成平手,则各得1分。 球队的净胜球数是其进球数减去失球数(不考虑该球队在比赛中作为主队还是客队)。 积分较高的球队排名更加靠前。 如果两支球队积分相同,那么净胜球数较多的球队排名靠前。 小组的各队伍进行循环赛,即每两支球队之间进行两场比赛,双方交替作为主队。给定一个小组内12 场比赛的结果,请求出小组的出线队伍:即排名第一和第二的两支球队。 保证答案唯一。 【输入形式】 输入的第一行包含一个整数T,代表测试数据的组数。接下来是 T 组数据。 每组数据共有12 行,每行描述一场比赛,格式为:“主队队名主队进球数vs. 客队进球数客队队名”,其中“主队队名”和“客队队名”为字符串,“主队进球数”和“客队进球数”为两球队在本场比赛中各自的进球数量。 1 ≤ T ≤ 50 球队队名仅包含小写英文字母 球队队名长度不超过10 个字符 0 ≤ 进球数 ≤ 100 【输出形式】 对于每组数据,输出一行,包含两个字符串,代表排名第一和第二的球队的队名。 【样例输入】 2 manutd 8 vs. 2 arsenal lyon 1 vs. 2 manutd fcbarca 0 vs. 0 lyon fcbarca 5 vs. 1 arsenal manutd 3 vs. 1 fcbarca arsenal 6 vs. 0 lyon arsenal 0 vs. 0 manutd manutd 4 vs. 2 lyon arsenal 2 vs. 2 fcbarca lyon 0 vs. 3 fcbarca lyon 1 vs. 0 arsenal fcbarca 0 vs. 1 manutd a 3 vs. 0 b a 0 vs. 0 c a 0 vs. 0 d b 0 vs. 0 a b 4 vs. 0 c b 0 vs. 0 d c 0 vs. 0 a c 0 vs. 0 b c 1 vs. 0 d d 3 vs. 0 a d 0 vs. 0 b d 0 vs. 0 c 【样例输出】 manutd fcbarca d b 【样例说明】 第一组数据:每支球队的积分与净胜球数分别为: manutd:16 分,净胜球数12。 fcbarca:8 分,净胜球数 4。 arsenal:5 分,净胜球数 −5。 lyon:4 分,净胜球数 −11。 第二组数据:每支球队的积分与净胜球数分别为: d:7 分,净胜球数 2。 b:7 分,净胜球数 1。 a:7 分,净胜球数 0。 c:7 分,净胜球数 −3。 所有球队的积分相同,但是净胜球数较多的队伍排名更加靠前。 编程语言 c++
06-26
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值