#include <iostream>
#include <string.h>
#include <stdio.h>
#include<cmath>
#define eps 1e-8
using namespace std;
double p[110][110];
double sum;
int n;
void init(){
p[2][1]=2.0/3.0;p[2][2]=1.0/3.0;
double pj;
for(int i=3;i<=101;i++)
{
pj=0;
for(int j=1;j<i;j++){
p[i][j]=pow(1.0/3.0,i-1)*i;
pj+=p[i][j];
}
p[i][i]=1-pj;
}
}
int jj=1;
double dfs(int nn,int k,int t,double pm){
if(k==1)return p[nn][1]*t;
if(pm<eps)return 1.0;
else{
double now;
double mysum=0;
for(int i=1;i<=k;i++)
{
now=pm;
now*=dfs(k,i,t+1,pm*p[k][i]);
mysum+=now;
}
// cout<<jj++<<"[][]"<<mysum<<endl;
return mysum;
}
}
int main()
{
init();
// for(int k2=1;k2<=7;k2++)
// cout<<p[7][k2]<<endl;
// cout<<"hehe"<<p[4][1]<<p[4][2]<<p[4][3]<<endl;
while(~scanf("%d",&n)){
sum=0;
for(int k=1;k<=n;k++)
{
double hj=dfs(n,k,1,p[n][k]);
// cout<<hj<<endl;
sum+=hj;
}
printf("%lf\n",sum);
}
return 0;
}
#include <string.h>
#include <stdio.h>
#include<cmath>
#define eps 1e-8
using namespace std;
double p[110][110];
double sum;
int n;
void init(){
p[2][1]=2.0/3.0;p[2][2]=1.0/3.0;
double pj;
for(int i=3;i<=101;i++)
{
pj=0;
for(int j=1;j<i;j++){
p[i][j]=pow(1.0/3.0,i-1)*i;
pj+=p[i][j];
}
p[i][i]=1-pj;
}
}
int jj=1;
double dfs(int nn,int k,int t,double pm){
if(k==1)return p[nn][1]*t;
if(pm<eps)return 1.0;
else{
double now;
double mysum=0;
for(int i=1;i<=k;i++)
{
now=pm;
now*=dfs(k,i,t+1,pm*p[k][i]);
mysum+=now;
}
// cout<<jj++<<"[][]"<<mysum<<endl;
return mysum;
}
}
int main()
{
init();
// for(int k2=1;k2<=7;k2++)
// cout<<p[7][k2]<<endl;
// cout<<"hehe"<<p[4][1]<<p[4][2]<<p[4][3]<<endl;
while(~scanf("%d",&n)){
sum=0;
for(int k=1;k<=n;k++)
{
double hj=dfs(n,k,1,p[n][k]);
// cout<<hj<<endl;
sum+=hj;
}
printf("%lf\n",sum);
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。