ZOJ 3415 Zhou Yu 代码 + 证明 (保证看得懂)
当时想到一种线性的方法,但是TLE,然后推了很久的公式,没有推出来。赛后看了watashi大牛的公式,终于用自己的方法推出来了。由于个人高等数学实在不怎么样,只会等比求和,等差求和。所以也只用了这两个公式而已。保证看不懂watashi大牛的那个证明的,看我这个能够看懂。
公式:
证明:下载
代码:
#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; }