码迷,mamicode.com
首页 > 其他好文 > 详细

loj 1038

时间:2019-08-28 00:48:41      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:print   scan   --   main   VID   rand   ase   +=   sam   

imi 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

3

1

2

50

Sample Output

Case 1: 0

Case 2: 2.00

Case 3: 3.0333333333

网上的题解都是错的,结果一群人再抄,笑死我了

设一个数的约数有num个,E[n] = (E[a[1]]+1)/num+(E[a[2]]+1)/num+...+(E[a[num]]+1)/num  ,而a[num]==n,于是整理得:

E[n]=(E[a[1]]+E[a[2]]+...+E[a[num-1]]+num)/(num-1)。

网上这个式子多了个+1,一群人抄的很起劲,笑死我了

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;

int n;
double dp[111111];

void Get_Dp()
{
    dp[1]=0;
    for(int i=2;i<=100000;i++){
        int cnt=0;
        double sum=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];
                }
            }
        }
        dp[i]=(sum+cnt)/(cnt-1);
    }
}

int main()
{
    Get_Dp();
    int _case,t=1;
    scanf("%d",&_case);
    while(_case--){
        scanf("%d",&n);
        printf("Case %d: %.10f\n",t++,dp[n]);
    }
    return 0;
}

 

loj 1038

标签:print   scan   --   main   VID   rand   ase   +=   sam   

原文地址:https://www.cnblogs.com/coolwx/p/11421599.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!