3517 - 你画我猜

“你们不好好学习ACM,整天想着开好挖掘机,和蓝翔新东方还有什么区别!”

盛夏静谧的午后,一阵聒噪的蝉声响起,群里的小兰告别了代码世界。

小兰离开后,代码世界的人们对她仅有的记忆就是……你画我猜。

这是几年前出现的一个很神奇的游戏,直到现如今也有不少人在玩。至于玩法呢,就是围一桌人,一个人拿到题目,把它画下来,然后其他人根据提示去猜那是什么。

但是玩过的人都知道,这个游戏是有词库的。也就是说,题目一定不会出在词库中的词之外。所以,即便你完全不知道画的人在画什么,也是有机率猜到的(虽然这个机率可能很小)。

现在就请你来计算一下这个概率,如果词库中有x个词,这x个词你全都记住了,你在完全看不懂画的人画的是什么的情况下,每次随机从这x个词中猜一个词,一共猜了m次,请问你有多大的机率可以猜中呢?

“这其实是个数学题!”小兰说道。

题目输入

第一行有一个整数n,代表输入实例有n组。接下来的n行,每行两个整数x(1<=x<=10000)m(1<=m<=100),分别代表词库中的词数和你猜的次数。

题目输出

对于每组输入实例,请输出你猜中的概率,结果保留4位小数。

输入/输出样例

题目输入

2
3 1
2 2

题目输出

0.3333
0.7500

C语言解答

#include <stdio.h>
#include <math.h>

int main()
{
	int t = 0;
	scanf("%d", &t);
	while(t--)
	{
		int a, b;
		scanf("%d%d", &a, &b);
		double r = 0.0;
		for(int i = 0; i < b; i ++)
		{
			r += (1.0/a) * pow(1.0-(1.0/a),i);
		}
		printf("%.4f\n", r);
	}
	return 0;
}

C++解答

#include <stdio.h>
#include <math.h>
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

int main(void)
{
//    ifstream cin;
//    ofstream cout;
//    cin.open("e.in");
//    cout.open("e.out");
    int n;
    cin>>n;
    while(n--)
    {
        double x,m;
        cin>>x>>m;
        cout<<setiosflags(ios::fixed)<<setprecision(4)<<1-pow(1-1/x,m)<<endl;

    }
    return 0;
}

时间限制 2 秒
内存限制 128 MB
讨论 统计
上一题 下一题