水了一上午。。
拿6面举例子吧,因为是投掷m次取最大,最大是1概率(1/6)^m;最大是2就可以取到(1,2)那么概率就是(1/3)^m-(1/6)^m。(当前减去上一个)
1 #include<bits/stdc++.h> 2 #define LL long long 3 #define LD long double 4 #define N 100005 5 using namespace std; 6 inline int ra() 7 { 8 int x=0,f=1; char ch=getchar(); 9 while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();} 10 while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();} 11 return x*f; 12 } 13 double ksm(double a, int p) 14 { 15 double sum=1; 16 for (;p;p>>=1,a*=a) 17 if (p&1) 18 sum*=a; 19 return sum; 20 } 21 int main() 22 { 23 int n=ra(),m=ra(); 24 double ans=0; 25 for (int i=1; i<=n; i++) 26 ans+=(double)i*(ksm((double)i/n,m)-ksm((double)(i-1)/n,m)); 27 printf("%.12lf",ans); 28 return 0; 29 }