卡(int64)超久== 一卡卡兩小時==
#include<cstdio> #include<cstdlib> long double arr[50001]; long double sig[50001]; int main(){ int n, m; for(;;){ scanf("%d %d", &n, &m); if(n + m == 0) break; arr[n] = m*(m-1)/(long double)((n-m+2)*(n-m+1)); for(int lx = n-1;lx >= 0;lx--) arr[lx] = arr[lx+1]*(((lx+1)-(m-2))/((long double)(lx+1))); sig[0] = arr[0]; for(int lx= 1;lx <= n;lx++) sig[lx] = sig[lx-1] + arr[lx]; int val; long double ans= 0; for(int lx = 0;lx < n;lx++){ scanf("%d", &val); long double gv = (long double) val; if(lx == 0) ans -= gv*sig[n-2]; else ans -= gv*(sig[n-2-lx] - sig[lx-1]); } printf("%.3LF\n", ans); } return 0; }
沒有留言:
張貼留言