UVA 11762 Race to 1 dp+概率

#include 
#include 
#include 
#include 
using namespace std;
const int maxn=1e6+10;
const int maxc=1e5;
double f[maxn];
int prime[maxc],num,vis[maxn];
void sieve(int n)  //筛素数
{
    int m=(int)sqrt(n+0.5);//避免浮点误差
    memset(vis,0,sizeof(vis));
    for(int i=2;i<=m;i++)if(!vis[i])
        for(int j=i*i;j<=n;j+=i)vis[j]=1;
}
//生成素数表,存在prime数组中,返回素数个数
int primes(int n)
{
    sieve(n);
    int t=0;
    for(int i=2;i<=n;i++)if(!vis[i])
        prime[t++]=i;
    return t;
}
double dfs(int x)
{
    if(x==1)return 0;
    if(vis[x])return f[x];
    vis[x]=1;
    int p,g,i;
    p=g=0;
    for(i=0;prime[i]<=x&&i

你可能感兴趣的:(数论*)