Uva_11762 Race to 1
题意:
给一个数n, 每次从小于等于n的素数里选一个P, 如果能被n整除, 那么就n就变成n / P。
问: n 变成1的期望。
思路:
设小于等于n的素数有p 个, 其中是n的约数的有g个。
则E[x] = 1 + 1/p * (1 - g/p) + sigma(i = 0, 1, 2, g)num[i] * 1/p。
化简得:
E[x] = (p + sigma(i = 0, 1, 2, g)num[i]) / g。
代码如下:
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <set>
#include <map>
#include <list>
#include <queue>
#include <string>
#include <vector>
#include <fstream>
#include <iterator>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
#define MAXN 1000010
#define MOD 1000000007
#define eps 1e-6
int prime_size;
int prime_[MAXN];
double f[MAXN];
bool prime[MAXN], vis[MAXN];
int n;
bool is_prime(int x)
{
if(x <= ) return false;
for(int i = ; i * i <= x; i ++)
if(x % i == ) return false;
return true;
}
void p_init()
{
memset(vis, false, sizeof(vis));
prime_size = ;
for(int i = ; i < MAXN; i ++)
if(is_prime(i))
{
prime_[prime_size ++] = i;
for(int j = ; j * i < MAXN; j ++)
prime[j * i] = true;
}
f[] = f[] = ;
}
double dp(int x)
{
if(x == ) return 0.0;
if(vis[x]) return f[x];
vis[x] = true;
int g = ;
int p = ;
double& ans = f[x];
ans = ;
for(int i = ; i < prime_size && prime_[i] <= x; i ++)
{
p ++;
if(x % prime_[i] == )
{
g ++;
ans += dp(x / prime_[i]);
}
}
ans = (ans + p) / g;
return ans;
} int main()
{
int T;
int kcase = ;
p_init();
scanf("%d", &T);
while(T --)
{
scanf("%d", &n);
printf("Case %d: %.7lf\n", ++ kcase, dp(n));
}
return ;
}
Uva_11762 Race to 1的更多相关文章
- Promise.race
		[Promise.race] 返回最先完成的promise var p1 = new Promise(function(resolve, reject) { setTimeout(resolve, 5 ... 
- golang中的race检测
		golang中的race检测 由于golang中的go是非常方便的,加上函数又非常容易隐藏go. 所以很多时候,当我们写出一个程序的时候,我们并不知道这个程序在并发情况下会不会出现什么问题. 所以在本 ... 
- 【BZOJ-2599】Race      点分治
		2599: [IOI2011]Race Time Limit: 70 Sec Memory Limit: 128 MBSubmit: 2590 Solved: 769[Submit][Status ... 
- hdu 4123 Bob’s Race 树的直径+rmq+尺取
		Bob’s Race Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Probl ... 
- Codeforces Round #131 (Div. 2) E. Relay Race dp
		题目链接: http://codeforces.com/problemset/problem/214/E Relay Race time limit per test4 secondsmemory l ... 
- 【多线程同步案例】Race Condition引起的性能问题
		Race Condition(也叫做资源竞争),是多线程编程中比较头疼的问题.特别是Java多线程模型当中,经常会因为多个线程同时访问相同的共享数据,而造成数据的不一致性.为了解决这个问题,通常来说需 ... 
- Codeforces Round #328 (Div. 2) C. The Big Race 数学.lcm
		C. The Big Race Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/592/probl ... 
- HDU 4123 Bob’s Race 树的直径 RMQ
		Bob’s Race Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=41 ... 
- [LOJ 1038] Race to 1 Again
		C - Race to 1 Again Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu D ... 
随机推荐
- JSON和JAVA的POJO的相互转换【转载】
			该类中用用到的jar包:参加文章<使用json-lib进行Java和JSON之间的转换[转载]> import java.util.Collection; import java.util ... 
- C语言 小游戏之贪吃蛇
			还记得非常久曾经听群里人说做贪吃蛇什么的,那时候大一刚学了C语言,认为非常难,根本没什么思路. 前不久群里有些人又在谈论C语言贪吃蛇的事了,看着他们在做,我也打算做一个出来. 如今大三,经过了这一年半 ... 
- 系统的启动模式(启动级别)的改动---使用upstart启动机制的
			/********************************************************************* * Author : Samson * Date ... 
- android 判断应用程序是否已安装
			1.判断是否安装/** check the app is installed*/private boolean isAppInstalled(Context context,String packag ... 
- Android_设备隐私获取,忽略6.0权限管理
			1.前言 (1).由于MIUI等部分国产定制系统也有权限管理,没有相关api,故无法判断用户是否允许获取联系人等隐私.在Android 6.0之后,新增权限管理可以通过官方api判断用户的运行状态: ... 
- skip-grant-tables
			1.net stop mysql 2.my.ini中[mysqld]plugin_dir的下面增加skip-grant-tables 3.net start mysql 4.在Navicat中打开my ... 
- C#网站实现QQ第三方登陆# C#快速开发教程
			C#网站实现QQ第三方登陆 说起在网站上面可以直接使用QQ登录功能大家并不陌生.但翻其官方提供的SDK包中却没有C#方向的. 但是我们有个牛人叫张善友,做了一个民间SDK.下面我们就是用他所写的SDK ... 
- sql中对查询出来的数据进行分页
			当sql中存储的数据量比较大时,在web中 数据显示时都会对数据进行分页,分页不会在客户端进行分页,而是在数据库查询过程中进行了分页. sql代码: DECLARE @pageindex INT; - ... 
- IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET
			转载至码农SeraphWU IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET 进入CMD 输入如下命令即可 "%WINDIR%\Microsoft.NET\Framework\ ... 
- log4net日志组件
			转载:http://www.cnblogs.com/knowledgesea/archive/2012/04/26/2471414.html 一.什么是log4net组件 Log4net是基于.net ... 
