Java实现 蓝桥杯 算法提高 抽卡游戏
2023-09-14 08:58:01 时间
试题 算法提高 抽卡游戏
某个抽卡游戏卡池抽出限定卡的概率为p,该游戏有一个“井”的机制,抽满k次卡后直接送这张限定卡。试求获得这张限定卡需要的期望抽卡次数。输入为一行,用空格隔开的p和k。输出为一行,即期望抽卡次数,取2位小数
样例输入
0.005 250
样例输出
142.88
样例说明
第1次抽到的概率为0.005
第2次抽到的概率为(1-0.005)*0.005
第n次抽到的概率为(1-0.005)^(n-1)*0.005
第250抽到的概率为之前都没有抽到的概率,即(1-0.005)^249
最终结果
1*0.005+2*(1-0.005)*0.005+…+n*(1-0.005)^(n-1)*0.005+…+250*(1-0.005)^249=142.88
数据规模和约定
请使用double类型存储所有浮点数变量
对60%的测试点,保证k≤1000,
对100%的测试点,保证k≤1000000。
如果程序过于低效,在k较大时会因超时而错误。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double p = sc.nextDouble();
int k = sc.nextInt();
sc.close();
double sum=0;
for (int i = 1; i <=k-1 ; i++) {
sum+=getResult(p,i);
}
//最后一个不需要添加成功的概率
sum +=k*Math.pow(1-p,k-1);
System.out.printf("%.2f",sum);
}
private static double getResult(double p,int i){
//前面的次数*失败的概率,加上最后一个成功的概率
return i*Math.pow(1-p,i-1)*p;
}
}
相关文章
- java除法保留两位小数_JAVA除法保留小数点后两位的两种方法
- java 把对象转成map_Java对象转换成Map[通俗易懂]
- java高级工程师面试情景题_Java高级工程师面试题III
- java判断一个对象是否为空_Java中判断对象是否为空的方法的详解
- java单例模式_Java单例模式
- eclipse怎么导入java文件_Eclipse如何导入JAVA工程?如何将项目导入Eclipse中?
- java循环语句_Java中的循环语句
- 说一下java的运行机制_Java运行机制是什么?「建议收藏」
- 十大Java编程工具
- Java 中的三大特性(超详细篇)
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- Ubuntu 16.04安装Java JDK8
- 【说站】java成员方法是什么?
- Java算法大全_java贪心算法几个经典例子
- Java 变量命名规则[通俗易懂]
- JAVA 新提案:努力简化Hello World,让初学者更好地接受 Java !
- Java Arrays.asList 实例详解编程语言
- java正则表达式验证标点符号详解编程语言
- 如何正确实现 Java 中的 HashCode详解编程语言
- 运行参数Linux 下修改 Java 运行参数的指南(linux修改java)
- 技巧Linux环境下提高Java编译效率的技巧(linux下java编译)
- Oracle与Java: 未来前瞻(oracle与java)
- 实战Java搭配MySQL:从零开始的数据库操作实践(javamysql实例)
- Java实现Redis事务管理(redis事务java)
- 清理Java运用Redis结合实现过期数据清理(redisjava过期)
- 教程:在Linux系统下安装Java(linux下java安装)
- Java中Oracle使用实践(java中oracle题)
- java中的Io(input与output)操作总结(四)
- java中"=="与equals方法的使用
- Java线程的相关方法详细解析