随机数模拟

#概率

例题:E 排位胜率(Easy Version)

23级算法 E1 E题
时间限制:2000ms 内存限制:65536kb

题目描述

这是问题的简单版本,与困难版本仅在 nn 的限制不同
某人在玩一款三字游戏的排位赛时,发现策划为了防止玩家输太多退游,设置了如下保护机制:

  • 每连输 nn 局后,会匹配到人机,人机技术很菜,即使玩家打的再菜,系统也会通过一些微妙的操作保证玩家胜利。
    现在某人想知道,在自己正常对战的胜率为 p%p% 的基础上,结合此保护政策,自己玩无穷局的胜率。由于游戏界面不可能展示太多位小数,你只需要求出来保留三位小数的结果。

输入

输入共一行两个正整数 n,pn,p(1≤n≤50,1≤p≤991≤n≤50,1≤p≤99)。

输出

对于每组数据,输出一行一个三位小数代表胜率

输入样例

 1 50

输出样例

 0.667

my代码

 ```c
#include<bits/stdc++.h>
using namespace std;
#define MAX 20000000

int temp, times, ans;

int main(){
int n, p;
scanf("%d%d", &n, &p);
// 初始化随机数种子
srand(static_cast(std::time(nullptr)));
// 生成 1 到 100 之间的随机数
for(int i = 0; i<MAX; i++){
temp = rand() % 100+1;  // p=50
if(temp <= p){
ans++;
times = 0;
}else{
times++;
if(times == n){     // n = 2
ans++;
i++;
times=0;
}
}
}
printf("%.3lf", ((double)ans)/MAX);
return 0;
}

Built with MDFriday ❤️