1.题目:
小明小红掷骰子,小明有n个骰子,第i个骰子有vi个面,每个面的点数为1、2、3...vi。
小红有m个骰子,第j个骰子有vj个面,每个面的点数为1、2、3...vj。
小明小红将自己的所有的骰子都掷一次,小明的骰子的点数总和有多大概率比小红的大。
2.测试用例:
输入:
n=1 m=3
vi={1}
vj={2,3,4}
输出:
0.255
3.采用大数模拟:
#include <iostream>
#include <string>
#include<vector>
using namespace std;
#define num 1000.0
int main() {
int n, m;
cin >> n >> m;
vector<int>v1(n);
for (int i = 0; i < n; ++i)cin >> v1[i];
vector<int>v2(m);
for (int i = 0; i < m; ++i)cin >> v2[i];
int cnt = 0;
for(int k=0;k< num;++k){
int a = 0;
for (int i = 0; i < n; ++i) {
a += (rand() % v1[i]);
}
int b = 0;
for (int i = 0; i < m; ++i) {
b += (rand() % v2[i]);
}
if (a+n > b+m)++cnt;
}
printf("%.3f",0.0001+float(cnt)/ num);
}