NC54262. GJX赚钱
描述
输入描述
第一行,两个正整数n和m。
第二行,n个实数,,表示每个人初始的金钱。
第三行,m个实数,,表示每个月获胜者可以获得的金钱。
输出描述
一行,一个实数,表示GJX在m个月后能够拥有的钱的数学期望。输出结果保留6位小数。
示例1
输入:
2 2 1 1 1 1
输出:
2.000000
Python(2.7.3) 解法, 执行用时: 25ms, 内存消耗: 2812K, 提交时间: 2019-10-26 17:01:23
num1 = [int(x) for x in raw_input().split(" ")] num2 = [float(x) for x in raw_input().split(" ")] num3 = [float(x) for x in raw_input().split(" ")] for j in num3: sum = 0 for i in range(num1[0]): sum = sum +num2[i-1] for i in range(num1[0]): P = num2[i-1]/sum num2[i-1] = num2[i-1] + P * j print(format(num2[0],".6f"))
C(clang 3.9) 解法, 执行用时: 4ms, 内存消耗: 360K, 提交时间: 2019-10-26 17:44:03
#include <stdio.h> int main() { int m, n; double sum = 0, first = 0, a; scanf("%d%d", &n, &m); scanf("%lf", &a); first = a; sum=a; for(int i=1; i<n; i++){ scanf("%lf", &a); sum+=a; } for(int i=0; i<m; i++){ scanf("%lf", &a); first += a*(first/sum); sum+=a; } printf("%.6lf", first); return 0; }
C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 376K, 提交时间: 2019-10-26 15:36:06
#include<iostream> using namespace std; int main() { int n,m; cin>>n>>m; double w[300],v[300]; double s=0; for (int i=0;i<n;i++) { cin>>w[i]; s+=w[i]; } for (int i=0;i<m;i++) cin>>v[i]; for (int i=0;i<m;i++) { w[0]=w[0]+w[0]/s*v[i]; s+=v[i]; } printf("%0.6f\n",w[0]); return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 488K, 提交时间: 2019-10-31 21:45:44
#include<bits/stdc++.h> using namespace std; const int maxn=305; int n,m; double dp[maxn]; int main(){ scanf("%d %d",&n,&m); double tmp=0,sum=0; for(int i=1;i<=n;i++){ cin>>tmp,dp[i]=tmp,sum+=tmp; } double v; for(int i=1;i<=m;i++){ cin>>v; dp[1]+=dp[1]*v/sum; sum+=v; } printf("%.6lf",dp[1]); }
Python3(3.5.2) 解法, 执行用时: 19ms, 内存消耗: 3352K, 提交时间: 2020-10-05 21:34:02
n, m = map(int, input().split()) w = list(map(float, input().split())) v = list(map(float, input().split())) for i in range(m): total = sum(w) p = list(map(lambda x:x/total, w)) w = list(map(lambda x, y:y + x*v[i], p, w)) print("{:.6f}".format(w[0]))