#include #include using namespace std; #define RI(x) scanf("%d",&(x)) #define RII(x,y) scanf("%d %d",&(x),&(y)) #define RI64(x) scanf("%I64d",&(x)) #define RII64(x,y) scanf("%I64d%I64d",&(x),&(y)) #define FZ(i,n) for(int i=0;i<(n);i++) #define PA(a,n) FZ(_1,n)printf("%d%c",(a)[_1],_1==(n)-1?10:32) #define ePA(a,n) FZ(_2,n)fprintf(stderr,"%d%c",(a)[_2],_2==(n)-1?10:32) #define SZ(x) ((int)x.size()) #define ALL(x) (x).begin(),(x).end() #define pritnf printf #define N 100514 //#define N 20 using namespace std; typedef long long int lnt; typedef double dou; dou upp[N][10]; dou dpp[N][10]; dou udp[N][10]; dou ddp[N][10]; dou odp[20]; dou tdp[20]; dou rdp[20]; void sol(int uuu){ printf("Case #%d:\n",uuu); int n; RI(n); if(n==1){ printf("%f %f\n",1.0,1.0); } else{ dou ans=0,sp=0,ans2=0; FZ(i,10){ ans+=upp[n][i]*udp[n][i]; ans+=dpp[n][i]*ddp[n][i]; sp+=upp[n][i]+dpp[n][i]; } for(int i=15;i>=0;i--){ sp/=9; ans2/=9; if(i<=n){ sp+=2*tdp[i]; ans2+=2*tdp[i]*(i-1); sp+=(n-i+1)*odp[i]; ans2+=(n-i+1)*odp[i]*(i-2); } if(i==n){ sp+=rdp[n]; ans2+=rdp[n]*n; } } printf("%f %f\n",ans,sp>1e-10?ans2/sp:0); } } int main(){ //while(RI(n)!=EOF)sol(); FZ(i,10){ ddp[2][i]=udp[2][i]=1; FZ(j,10){ if(i>j){ dpp[2][j]+=(dou)1/90; } if(i=3){ FZ(j,10){ dpp[i][j]=0; for(int k=j+1;k<10;k++){ dpp[i][j]+=dpp[i-1][k]; dpp[i][j]+=upp[i-1][k]; } //////// ddp[i][j]=0; for(int k=j+1;k<10;k++){ ddp[i][j]+=dpp[i-1][k]*(ddp[i-1][k]+0); ddp[i][j]+=upp[i-1][k]*(udp[i-1][k]+1); } if(1e-10<=dpp[i][j]&&dpp[i][j]<=0.001)printf("%f\n",dpp[i][j]); if(dpp[i][j]>=1e-10){ ddp[i][j]/=dpp[i][j]; dpp[i][j]/=9; } } ///////// FZ(j,10){ upp[i][j]=0; for(int k=0;k=1e-10){ udp[i][j]/=upp[i][j]; upp[i][j]/=9; } } } ///////// dou c[100][100]; FZ(i,10){ c[i][0]=c[i][i]=1; for(int j=1;j