标签:lan hand oid ons case bit more opened mamicode
InputThe first line of the input contains an integer T (T ≤ 200), indicating the number of test cases. Then T cases follow. Each case contains a line with two numbers N and K. (1 < N ≤ 20, 1 ≤ K < N)OutputOutput one line for each case, indicating the corresponding possibility. Four digits after decimal point are preserved by rounding.Sample Input
3
3 1
3 2
4 2
Sample Output
0.3333
0.6667
0.6250
Hint
Sample Explanation
When N = 3, there are 6 possible distributions of keys:
Room 1 Room 2 Room 3 Destroy Times
#1 Key 1 Key 2 Key 3 Impossible
#2 Key 1 Key 3 Key 2 Impossible
#3 Key 2 Key 1 Key 3 Two
#4 Key 3 Key 2 Key 1 Two
#5 Key 2 Key 3 Key 1 One
#6 Key 3 Key 1 Key 2 One
In the first two distributions, because Key 1 is locked in Room 1 itself and you can’t destroy Room 1, it is impossible to open Room 1.
In the third and forth distributions, you have to destroy Room 2 and 3 both. In the last two distributions, you only need to destroy one of Room 2 or Room
有n个房间,每个房间有一个钥匙,钥匙等概率的出现在n个房间内,
每个房间中只会出现且仅出现一个钥匙。你能放k次炸门的膜法,
问你能进入所有房间的概率。特殊要求:不能炸1号房间的门。
/* 有n个房间,每个房间有一个钥匙,钥匙等概率的出现在n个房间内, 每个房间中只会出现且仅出现一个钥匙。你能放k次炸门的膜法, 问你能进入所有房间的概率。特殊要求:不能炸1号房间的门。 */ #include <bits/stdc++.h> using namespace std; typedef long long ll; inline ll read() { ll s=0; bool f=0; char ch=‘ ‘; while(!isdigit(ch)) {f|=(ch==‘-‘); ch=getchar();} while(isdigit(ch)) {s=(s<<3)+(s<<1)+(ch^48); ch=getchar();} return (f)?(-s):(s); } #define R(x) x=read() inline void write(ll x) { if(x<0) {putchar(‘-‘); x=-x;} if(x<10) {putchar(x+‘0‘); return;} write(x/10); putchar((x%10)+‘0‘); } #define W(x) write(x),putchar(‘ ‘) #define Wl(x) write(x),putchar(‘\n‘) const int N=2005; ll T,n,m; double Su[N][N],Sq[N][N],fac[25]; int main() { // freopen("data.in","r",stdin); ll i,j; R(T); fac[0]=1; for(i=1;i<=20;i++) fac[i]=fac[i-1]*i; Su[0][0]=1.; for(i=1;i<=20;i++) { for(j=1;j<=i;j++) { Su[i][j]=Su[i-1][j-1]+Su[i-1][j]*(i-1); Sq[i][j]=Sq[i][j-1]+Su[i][j]-Su[i-1][j-1]; } } // for(i=1;i<=3;i++) for(j=1;j<=3;j++) // { // cout<<i<<‘ ‘<<j<<‘ ‘; printf("%.0lf\n",Su[i][j]); // } while(T--) { R(n); R(m); printf("%.4lf\n",(double)Sq[n][m]/fac[n]); } return 0; } /* input 3 3 1 3 2 4 2 Output 0.3333 0.6667 0.6250 */
标签:lan hand oid ons case bit more opened mamicode
原文地址:https://www.cnblogs.com/gaojunonly1/p/11203414.html