ZOJ 3415 Zhou Yu 代码 + 证明 (保证看得懂)

当时想到一种线性的方法,但是TLE,然后推了很久的公式,没有推出来。赛后看了watashi大牛的公式,终于用自己的方法推出来了。由于个人高等数学实在不怎么样,只会等比求和,等差求和。所以也只用了这两个公式而已。保证看不懂watashi大牛的那个证明的,看我这个能够看懂。

 

公式:

wps_clip_image-26017

 

证明:下载

 

代码:

#include <iostream>
#include <stdio.h>
#include <iomanip>

using namespace std;

double power(double a, int b)
{
    if(b == 0)
    {
        return 1.0;
    }
    if(b == 1)
    {
        return a;
    }
    double ret = power(a, b/2);
    if(b & 1)
    {
        return ret * ret * a;
    }
    else
    {
        return ret * ret;
    }
}

int main()
{
    int n, m;
    while(scanf("%d%d", &n, &m) != EOF)
    {
        if(m == 2)
        {
            printf("%.10lf\n", 1.0 * n * (n+1));
        }
        else
        {
            double pow = power(1.0 / (m - 1), n);
            printf("%.10lf\n", 1.0 * m / (m-2) / (m-2) * (pow + 1.0 * n * (m - 2) - 1));
        }
    }
    return 0;
}

转载于:https://www.cnblogs.com/lijunle/archive/2010/10/09/1846577.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值