LightOJ 1038 Race to 1 Again【概率DP】
来源:互联网 发布:视频加速软件 编辑:程序博客网 时间:2024/06/05 03:17
Description
Input
Output
Sample Input
Sample Output
Hint
Description
Rimi learned a new thing about integers, which is - any positive integer greater than1 can be divided by its divisors. So, he is now playing with this property. He selects a numberN. And he calls this D.
In each turn he randomly chooses a divisor of D (1 to D). Then he dividesD by the number to obtain new D. He repeats this procedure untilD becomes 1. What is the expected number of moves required forN to become 1.
Input
Input starts with an integer T (≤ 10000), denoting the number of test cases.
Each case begins with an integer N (1 ≤ N ≤ 105).
Output
For each case of input you have to print the case number and the expected value. Errors less than10-6 will be ignored.
Sample Input
3
1
2
50
Sample Output
Case 1: 0
Case 2: 2.00
Case 3: 3.0333333333
/* 题意:求将一个数变成1,每次可以除去它的任意一个因子,问你次数的期望为多少 类型:概率DP 分析:设dp[i]表示i变成1的次数期望 当N=2时,有两个因子:1,2.所以dp[2]=dp[1]/2+dp[2]/2+1; 可以得到dp[2]=2; 当N=8时,有4个因子1,2,4,8.所以dp[8]=dp[1]/4+dp[2]/4+dp[4]/4+dp[8]/4+1;可以得到dp[8]; 以此类推 dp[i]=dp[a[1]]/cnt+dp[a[2]]/cnt+...+dp[a[cnt]]/cnt+1; 其中cnt为i的因子个数,a数组为i的因子集合 整理可得dp[i]=(dp[a[1]]+dp[a[2]]+...+dp[a[cnt-1]]+cnt)/(cnt-1);*/#include <cstring>#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>#include <stack>#include <vector>#include <queue>using namespace std;const int maxn = 100005;double dp[maxn];int main(){ dp[1] = 0; for(int i=2;i<maxn;i++){ double sum=0; int cnt=0; for(int j=1;j*j<=i;j++){ if(i%j==0){ cnt++; sum+=dp[j]; if(j*j!=i){ cnt++; sum+=dp[i/j]; } } } sum+=cnt; dp[i]=sum/(cnt-1); } int t,n; scanf("%d",&t); for(int Cas=1;Cas<=t;Cas++){ scanf("%d",&n); printf("Case %d: %.6f\n",Cas,dp[n]); } return 0;}
- 【概率DP】 LightOJ 1038 Race to 1 Again
- 期望概率dp lightoj 1038 Race to 1 Again
- lightoj 1038 - Race to 1 Again 【概率dp】
- LightOJ 1038 Race to 1 again 期望+概率dp
- LightOJ 1038 Race to 1 Again【概率DP】
- LightOJ-1038-Race to 1 Again(概率dp)
- LightOJ 1038 Race to 1 Again [概率dp]
- LightOJ 1038 Race to 1 Again(概率期望DP)
- LightOJ 1038 - Race to 1 Again 【DP】
- 【LightOJ 1038】Race to 1 Again(概率DP求期望)
- LightOJ 1038 Race to 1 Again(概率期望)
- LightOJ 1038 Race to 1 Again 期望 记忆化dp
- LightOJ 1038 - Race to 1 Again(dp)
- LightOJ 1038 - Race to 1 Again (期望dp)
- LightOJ 1038 - Race to 1 Again(期望DP)
- lightoj 1038-Race to 1 Again 期望类DP
- lightoj1038 - Race to 1 Again(概率DP)
- LIghtOJ1038---Race to 1 Again(概率dp)
- ANDROID 开发常用的框架、工具、API最全集合
- Spring MVC(三)封装表单参数的控制器(AbstractController)
- View绘制详解(三),扒一扒View的测量过程
- git push 使用ssh
- UOJ 171 [WC2016]挑战NPC
- LightOJ 1038 Race to 1 Again【概率DP】
- DirectX导图(5):色彩
- CSS的单位
- 输入和输出(IO)流的简单介绍
- 一个按键的工具类,处理点击、双击、长按等事件
- Android中去掉标题栏的几种方法(三种)
- HDU 4549 矩阵快速幂 + 快速幂取模 + 费马小定理
- DirectX导图(6):灯光
- JavaScript的那些坑之闭包