2013 编程之美挑战赛 仙剑5前传之软星包子

时间限制: 1000ms 内存限制: 256MB

描述

仙剑是一款经典的RPG游戏,最近又推出了仙剑5前传。Alice身为忠实的仙剑粉丝,当然是在第一时间就开始玩了。迷宫以及各类小游戏是仙剑系列的一大传统,这次也不例外。而且还增加了称号系统,玩家如果在满足一定条件下通过迷宫或是完成小游戏,都可以获得相应的称号奖励。Alice虽然智商也不算太低,顺利的完成游戏还是没什么问题的,但是某些称号对于她来说好像比较困难,所以她来找你帮忙。

仙剑5前传中增加了软星包子这种很萌的NPC,它散落在世界各地,你每找到一个,都可以挑战他,挑战成功可以拿到一些卡片。挑战具体说来就是一个记忆力游戏,有 N 种卡片,每种两张,总共 2N 张卡片面朝下放置。玩家可以点击面朝下的卡片并将其翻面。当有两张卡片正面朝上时,如果这两张卡片是同一种,则将这两张卡片收走,否则的话,再将这两张卡片面朝下放置在原位。

Alice的记忆力很差,只能记住 K 张卡片(包括刚刚翻开的)。她的策略如下:

* 当没有卡片正面朝上时:

   * 如果她记住的卡片中有两张是同一种的,那就翻开那两张卡片;

   * 否则,她随机的翻开一张她不知道的卡片。

* 当有一张卡片正面朝上时:

   * 如果她记得另一张同样的卡片在哪里,就直接翻开那张;

   * 否则,她随机的翻开一张她不知道的卡片。

Alice想知道,她期望要点多少次才可以完成这个小游戏。

输入

输入数据的第一行包含一个整数 T,表示数据组数。

接下来有 T 组数据,每组数据中有一行,包含两个整数 N, K。

输出

对于每组数据,输出一行"Case #X: Y",其中 X 为数据组数编号,从 1 开始,Y 为期望的步数。

绝对误差在1e-6以内或相对误差在1e-8以内即可。

数据范围

1 ≤ T ≤ 10

1 ≤ K ≤ 10

小数据:1 ≤ N ≤ 100

大数据:1 ≤ N ≤ 100000

提示

下面是一种可能的游戏过程,用来解释Alice可以记住 K 张卡片这一点:

假设N = 5, K = 3

已经翻开的卡片刚刚翻开的卡片Alice记住的卡片解释
-A0A0 
A0B0A0, B0 
-C0A0, B0, C0 
C0B1B0, C0, B1 
-B0, B1C0, B0, B1B0和B1都在记忆中,直接翻开移除
-A1C0, A1 
A1D0C0, A1, D0 
-E0A1, D0, E0 
E0E1D0, E0, E1碰巧翻到两张一样的,E0和E1移除
-D1D0, D1 
D1D0D1, D0Alice记得D0,D0和D1移除
-A1A1 

继续……

样例输入
2
2 1
3 3
样例输出
Case #1: 8.000000
Case #2: 9.000000
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值