解题思路

我看了下官方题解,官方题解用的是求期望的方式去做,这就有点复杂了,这里的话我是使用的是均值不等式进行求解,枚举其K只宠物为一组,即可,详细如下图。

AC代码

  1. import java.util.Scanner;
  2. /**
  3. *
  4. * @author 长白崎
  5. * @class["第十五届蓝桥杯JavaB组省赛"]
  6. */
  7. public class Main {
  8. public static void main(String[] args) {
  9. // TODO Auto-generated method stub
  10. Scanner sc = new Scanner(System.in);
  11. int N = sc.nextInt();
  12. double p = sc.nextDouble();
  13. double min =0x3f3f3f3f;
  14. int mI =0;
  15. for(int k =1;k<=N;++k) {
  16. if(N%k!=0)continue;//这里是为了根据题意正好分成K个为一组
  17. if(min>=N/k+N*p*k) {
  18. min = N/k+N*p*k;
  19. mI = k;
  20. }
  21. }
  22. System.out.println(mI);
  23. }
  24. }
点赞(3)
 

10 分

6 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

dotcpp0736917 5月前 回复TA
设最坏情况每组都会有感染不就是N吗,为什么是b=N*p*k
dotcpp0736917 5月前 回复TA
官方题解在哪看呀