[Day29]What is the Probability?

上一篇介绍了Hashmat the brave warrior,这题只需要输入两个数字,并让两个数字相减之後取出绝对值就可以得到答案了,是一题非常简单的题目。

今天讲解的题目是What is the Probability?
先附上程序码:
import java.util.;
import static java.lang.System.
;
public class main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()){
int C=sc.nextInt();
for(int i=0;i<C;i++){
int A=70;
int x=sc.nextInt();
double p=sc.nextDouble();
double q=1-p;
int k=sc.nextInt();
double a=Math.pow(q,k-1)p;
double r=Math.pow(q,x);
if(p==0){
System.out.println("0.0000");
}else{
System.out.printf("%.4f\r\n",a
(1-Math.pow(r,A))/(1-r));
}
}
}
}
};

这题首先要我们输入一个数字,代表几题,再来是几个人,再来是获胜的机率,最後是第几个人获胜,
假设赢的机率是 p,输的机率是 q = (1 - p),再假设有 n个人:
在第一回合中,第一个人赢的机率是 p。
在第一回合中,第二个人赢的机率是 q * p。
第二回合
在第二回合中,第一个人赢的机率是 q^n * p。 (第一回合中每个人都失败)
在第二回合中,第二个人赢的机率是 q^n * q * p。
在第二回合中,第 k个人赢的机率是 q^n * q^(k - 1) * p。
以此类推,也就是说在第 R回合中,第 k个人赢的机率是 q^( (R - 1) * n) * q^(k - 1) * p。
也就是依照以上公式写出程序码,要注意的是有小数点,所以要使用double。
今天的讲解就到这里。
明天会是最後一篇了,我打算来讲个心得总结,谢谢各位。


<<:  [重构倒数第02天] - Slots 与 Render Functions 的进阶心法

>>:  [Day28]C# 鸡础观念- 物件导向(oop)~ 继承(Inheritance)

Day 19 ATT&CK for ICS - Evasion(1)

攻击者於入侵阶段要用来避免被发现,因此可以透过许多方式去避免侦测。 T0856 Spoof Repo...

DAY17聚类演算法

昨天介绍完支持向量机,今天就要来介绍甚麽是分类和聚类: 通过将资料通过分类的方法分成不同的组别或者更...

Day28-介绍 Redux DevTools

这篇要介绍的是 Redux DevTools,是一个可以纪录及操作存在 Redux store 内的...

JavaScript Day 5. 型别辨识 typeof

偶尔程序也会碰到需要辨别变数的状态,有时候是用於防止使用者输入奇怪的文字,有时候是帮助自己确认变数的...

NNI如何搬到云端上玩?

截至目前为止,NNI也安装了,model也会了。可是,就是没有钱买一张绘图卡,到cuda devic...