与概率DP同归于尽之中。
好菜啊,概率DP的递推公式怎么弄,菜到哭泣。55555
算了,还是多做题吧,做的多了说不定就开窍了。
这个题概率之前没有权值,和之前做的们那个题有很大的共同之处,可还是推不出公式,怎么可以这么菜。
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<iostream>
#include<string>
#include <set>
#include<time.h>
//a&3==a%4
using namespace std ;
#define ll long long
#define mem(a) memset(a,0,sizeof(a))
const double eps = 1e-8;
const int maxn = 100010;//须填写
const int inf = 0x3f3f3f3f;
double f[maxn];
void init()
{
f[1]=0;
for(int i=2;i<maxn;i++)
{
int c=0;
double sum=0;
for(int j=1;j*j<=i;j++)
{
if(i%j==0)
{
c++;
sum+=f[j];
if(j*j!=i)
{
c++;
sum+=f[i/j];
}
}
}
f[i]=(sum+c)/(c-1.00);
}
}
int main()
{
int _case;
memset(f,0,sizeof(f));
init();
scanf("%d",&_case);
for(int ii=1;ii<=_case;ii++)
{
int n;
scanf("%d",&n);
printf("Case %d: %.10f\n",ii,f[n]);
}
return 0;
}