lightoj 1038 - Race to 1 Again 【概率dp】
2016-04-13 22:11
405 查看
题目链接:lightoj 1038 - Race to 1 Again
1038 - Race to 1 Again
PDF (English) Statistics Forum
Time Limit: 2 second(s) Memory Limit: 32 MB
Rimi learned a new thing about integers, which is - any positive integer greater than 1 can be divided by its divisors. So, he is now playing with this property. He selects a number N. And he calls this D.
In each turn he randomly chooses a divisor of D (1 to D). Then he divides D by the number to obtain new D. He repeats this procedure until D becomes 1. What is the expected number of moves required for N 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 than 10-6 will be ignored.
Sample Input
Output for Sample Input
3
1
2
50
Case 1: 0
Case 2: 2.00
Case 3: 3.0333333333
PROBLEM SETTER: JANE ALAM JAN
题意:要求将一个数变成1,每次可以除去它的任意一个因子,问你次数的期望。
思路:其实我不懂为什么dp[2] = 2,按这递推就过了。。。
AC代码:
1038 - Race to 1 Again
PDF (English) Statistics Forum
Time Limit: 2 second(s) Memory Limit: 32 MB
Rimi learned a new thing about integers, which is - any positive integer greater than 1 can be divided by its divisors. So, he is now playing with this property. He selects a number N. And he calls this D.
In each turn he randomly chooses a divisor of D (1 to D). Then he divides D by the number to obtain new D. He repeats this procedure until D becomes 1. What is the expected number of moves required for N 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 than 10-6 will be ignored.
Sample Input
Output for Sample Input
3
1
2
50
Case 1: 0
Case 2: 2.00
Case 3: 3.0333333333
PROBLEM SETTER: JANE ALAM JAN
题意:要求将一个数变成1,每次可以除去它的任意一个因子,问你次数的期望。
思路:其实我不懂为什么dp[2] = 2,按这递推就过了。。。
AC代码:
#include <cstdio> #include <cstring> #include <vector> #include <queue> #include <iostream> #define CLR(a, b) memset(a, (b), sizeof(a)) using namespace std; const int INF = 0x3f3f3f3f; const int MAXN = 1e5 + 1; double dp[MAXN]; void get() { dp[1] = 0; dp[2] = 2; for(int i = 3; i < MAXN; i++) { int num = 0; for(int j = 1; j * j <= i; j++) { if(i % j == 0) { num++; if(j * j != i) num++; } } dp[i] = 1; num--; for(int j = 1; j * j <= i; j++) { if(i % j == 0) { dp[i] += dp[j] * 1.0 / num; if(j * j != i) { dp[i] += dp[i / j] * 1.0 / num; } } } } } int main() { get(); int t, kcase = 1; scanf("%d", &t); while(t--) { int n; scanf("%d", &n); printf("Case %d: %.6lf\n", kcase++, dp ); } return 0; }
相关文章推荐
- Codeforces 652C Foe Pairs 【dp】
- Aizu 2200 Mr. Rito Post Office【特复杂的floyd+dp】
- 220. Contains Duplicate III set的应用
- bailian--oj--2757(最长上升子序列)
- sleep和wait的区别
- POJ-1691 Painting A Board
- inflater.inflate(R.layout.main_tab_01, null)与inflater.inflate(R.layout.main_tab_01, container, false
- leetcode之Contains Duplicate II
- 使用UltraISO(软碟通)制作U盘启动盘完整教程
- mybaits 一对多 关联查询
- 错误:Command /usr/bin/codesign failed with exit code 1
- leetcode——11——Container With Most Water
- 错误: error linker command failed with exit code 1 (use –v to see invocation)
- drupal behavior good explain
- HDU 5228 ZCC loves straight flush 暴力
- Kafka设计解析(三) : Kafka High Availability (下)
- Kafka设计解析(二):Kafka High Availability (上)
- opencv cvcopy() error :assertion faild (src.depth()==dst.depth()&&src.size==dst.size)
- Aizu 2249 Road Construction【最短路变形】
- char *p[]={"Shanghai","Beijing","Honkong"};则结果为j字符的表达式是