- 铜粒:
- 银粒:
- 金粒:
- 其它:
求破坏
你的输出与标准输出误差在
以内将被视为正确。
为了避免不必要的错误,请至少输出
位。
第一行一个正整数表示数据组数。
接下来行,每行三个整数
。
输出共行。
对于每行,一个实数表示破坏个沙砾能做出铜镐的概率。
2 8 8 0 1 2 3
0.0277862549 0.0000000000
#include <iostream>
#include <cstdio>
#include <cmath>
const long double N = 16.0L;
const int C16_4 = 16*15*14*13/(4*3*2*1);
int main()
{
int t = 0;
std::cin>>t;
while(t--)
{
int a = 0,b = 0,c = 0;
std::cin>>a>>b>>c;
long double pa = (long double)a/N;
long double pb = (long double)b/N;
long double pc = (long double)c/N;
long double ans = ::powl(pa,(long double)16) + ::powl(pa,(long double)12)*(::powl(pb,(long double)4) + powl(pc,(long double)4))*C16_4;
printf("%.10Lf\n",ans);
}
} dp[c][i][j][k] = dp[c-1][i-1][j][k]*a/16+dp[c-1][i][j-1][k]*b/16+dp[c-1][i][j][k-1]*c/16 于是愉快ac了