Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- #define ld long double
- #define VI vector<int>
- #define _pb push_back
- #define _all(v) v.begin(), v.end()
- #define II pair<int,int>
- #define III pair<int, II>
- #define F first
- #define S second
- #define _mp make_pair
- #define LINE putc('\n', stdout)
- #define SPACE putc(' ' , stdout)
- #define TAB putc('\t', stdout)
- #define _out(_) printf("%i",_)
- #define __out(_,__) printf("%i %i",_,__)
- #define ___out(_,__,___) printf("%i %i %i",_,__,___)
- #define _outLL(_) printf("%I64d",_)
- #define __outLL(_,__) printf("%I64d %I64d",_,__)
- #define ___outLL(_,__,___) printf("%I64d %I64d %I64d",_,__,___)
- #define _in(_) scanf("%i", &_)
- #define __in(_,__) scanf("%i%i",&_,&__)
- #define ___in(_,__,___) scanf("%i%i%i",&_,&__,&___)
- #define _inLL(_) scanf("%I64d", &_)
- #define __inLL(_,__) scanf("%I64d%I64d",&_,&__)
- #define ___inLL(_,__,___) scanf("%I64d%I64d%I64d",&_,&__,&___)
- #define _debug(_) printf("-----------> Debuging : %i\n",_ );
- #define _for(i, n) for(int i=0 ; i<n ; i++)
- #define _rof(i, n) for(int i=n ; i-- ; )
- #define rm_imp(d, p) (round(d*p)/p)
- #define INF 2e9
- int n, T;
- ld A[22][22], Tab[22][22];
- #define MAX_nCr 22
- ld C[MAX_nCr][MAX_nCr];
- void init_nCr(){
- for(int n=0;n<=MAX_nCr;n++) C[n][0]=C[n][n]=1;
- for(int n=2;n<=MAX_nCr;n++)
- for(int r=1;r<n;r++) C[n][r]=C[n-1][r-1]+C[n-1][r];
- }
- int main()
- {
- init_nCr();
- _in(T);
- for(int t=1; t<=T ; t++)
- {
- _in(n);
- printf("Case %i: ", t);
- for(int i=0 ; i<n ; i++)
- for(int j=0 ; j<n ; j++)
- cin>>A[i][j], Tab[i][j]=0;
- if(n==1){
- printf("%.6Lf \n",(ld)1);
- continue;
- }
- for(int Winner=0 ; Winner<n ; Winner++)
- for(int mask=1 ; mask<(1<<n) ; mask++)
- if(!(mask&(1<<Winner)))
- {
- ld x = 1;
- for(int Loser=0 ; Loser<n ; Loser++)
- if(mask& (1<<Loser) ) x*=A[Winner][Loser];
- Tab[Winner][__builtin_popcount(mask)] += x;
- }
- //char sp[2]={0}; // Only spaces between answers didn't work either
- for(int i=0 ; i<n ; i++)
- {
- ld ans=0;
- for(int j=1 ; j<=n-1 ; j++)
- ans+=Tab[i][j]/C[n-1][j];
- printf("%.6Lf ", ans);
- //printf("%s%.6Lf\n", sp, ans), *sp=' ';
- }
- LINE;
- }
- //LINE;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement