题意
- 有两种询问:
- 0 m n 让求 m 面的筛子,期望要多少出筛子,使最后 n 次筛子所出现相同的面。
- 1 m n 让求 m 面的筛子,期望要多少出筛子,使最后 n 次筛子所出现面,两两不同。
思路
-
最后 n 次相同
-
最后 n 次各不相同
代码
#include <bits/stdc++.h>
using namespace std;
#define db double
#define ll long long
#define sc scanf
#define pr printf
#define fi first
#define se second
#define pb push_back
#define m_p make_pair
#define Pir pair<int, int>
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
/*==========ACMer===========*/
int k, m, n;
db sov1()
{
db ans = 0;
for (int i = 0; i < n; i ++)
ans += pow(m * 1.0, i);
return ans;
}
db sov2()
{
db ans = 0, tmp = 1;
for (int i = 1; i <= n; i ++)
{
ans += tmp;
tmp *= 1.0 * m / (m - i);
}
return ans;
}
int main()
{
int T;
while (sc("%d", &T) != EOF)
{
while (T --)
{
sc("%d %d %d", &k, &m, &n);
if (k)
{
pr("%f\n", sov2());
}
else
{
pr("%f\n", sov1());
}
}
}
return 0;
}