第三题 组合数 #include <iostream> #include <vector> using namespace std; long long C[51][51] = {0}; void GetC(int maxn) {     C[0][0] = 1;     for(int i = 1; i <= maxn; ++i) {         C[i][0] = 1;         for(int j = 1; j <= i; ++j){             C[i][j] = C[i-1][j]+C[i-1][j-1];         }     } } double getNum(const int *arr, const int n, const int maxNum) {     int gE = 0;     double less = 1.0;     double ret = 0.0;     for(int i = 0; i < n; ++i) {         if(arr[i] >= maxNum) gE++;         else less *= arr[i];     }     for(int k = 1; k <= gE; ++k) {         double cn = C[gE][k];         double tP = 1.0;         for(int i = 0; i < gE - k; ++i) {             tP = tP * (maxNum - 1);         }         ret = ret + cn * tP * less;     }     return ret; } int main(){     int n = 0;     int maxNum = 0;     double fengmu = 1.0;     double fengzhi = 1.0;     double ans = 1.0;     int arr[55] = {0};     cin >> n;     GetC(n);     for(int i = 0; i < n; ++i) {         cin >> arr[i];         fengmu *= arr[i];         if(arr[i] > maxNum) maxNum = arr[i];     }     for(int i = 2; i <= maxNum; ++i) {         fengzhi = fengzhi + i * getNum(arr, n, i);     }     ans = fengzhi/fengmu;     printf("%.2lf\n", ans);     return 0; } 第四题思路应该是对于i , j 坐标求 大于该数的个数,没时间写了
点赞 3

相关推荐

02-15 22:29
门头沟学院 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客网
牛客企业服务