LOTT - Xổ số
Tác giả: RR
Ngôn ngữ: C++
#include <iostream>
#include <algorithm>
#include <iomanip>
#define FOR(i,a,b) for(int i=a; i<=b; i++)
using namespace std;
int debug=0;
char s[20];
int n;
long double c[6][6],a[511][6],f[111][6],gt[555];
void init() {
FOR(i,0,5) {
c[i][0]=1;
FOR(j,1,i)
c[i][j]=c[i-1][j-1]+c[i-1][j];
}
FOR(i,1,500) {
a[i][0]=1.0;
FOR(j,1,min(i,5))
a[i][j]=a[i][j-1]*(i-j+1);
}
gt[0]=1;
FOR(i,1,500) gt[i]=gt[i-1]*i;
}
int main() {
scanf("%s\n",&s);
init();
while (s[1]=='C') {
scanf("%d",&n);
f[0][0]=1.0;
FOR(i,1,n)
FOR(k,0,5) {
f[i][k]=0;
FOR(kk,max(k-2,0),k) {
f[i][k]+=f[i-1][kk]*c[5-kk][k-kk]*a[5][k-kk]*a[5*n-5-(5*(i-1)-kk)][5-k+kk];
}
}
cout<<setprecision(15)<<(gt[5*n]-f[n][5])/gt[5*n]<<endl;
scanf("%s\n",&s);
}
return 0;
}