有两种蛋糕,榴莲蛋糕和冰淇淋蛋糕,其中榴莲蛋糕被分成了 块,冰淇淋蛋糕被分成了 块。总共有 个盘子,每种蛋糕能够整除均分到各个盘子里,要求一个盘子里面不能含有两种蛋糕,每个盘子至少含有2块蛋糕,所有的蛋糕必须放到盘子里面去。求一个盘子里最少有多少块蛋糕 。不能做到的话返回0
区块链毕设网qklbishe.com为您提供问题的解答
有两种蛋糕,榴莲蛋糕和冰淇淋蛋糕,其中榴莲蛋糕被分成了块,冰淇淋蛋糕被分成了块。总共有个盘子,每种蛋糕能够整除均分到各个盘子里,要求一个盘子里面不能含有两种蛋糕,每个盘子至少含有2块蛋糕,所有的蛋糕必须放到盘子里面去。求一个盘子里最少有多少块蛋糕。不能做到的话返回0
数学
先过滤几种特殊情况:
(1)由于,所以时,只能每个盘子一块蛋糕,这样不符合题意,直接返回0;
(2)如果两种蛋糕较少数量的那一种不到两块,要保证每个盘子都是同一种蛋糕也是不可能的,返回0;
(3)如果只有两个盘子,那分成两份较少的那一份就是。
过滤完成后就可以开始计算一般情况了。我们不妨设,然后枚举分蛋糕的可能性,将分为份,其中,如此一来蛋糕就被分成了份。在枚举的过程中需要保证:,。最少的一份蛋糕就是,最后需要注意的是:不能小于2。
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 n个盘子 * @param a int整型 榴莲蛋糕a块 * @param b int整型 冰淇淋蛋糕b块 * @return int整型 */ public int minCake (int n, int a, int b) { // write code here if(a + b == n || Math.min(a, b) < 2){ return 0; }else if(n == 2){ return Math.min(a, b); } if(a < b){ int temp = a; a = b; b = temp; } // 把a均分放入i个盘子 int ans = a; for(int i = 1; i <= n - 1; i++){ if(a % i != 0){ continue; }else{ int j = n - i; if(b % j != 0){ continue; }else{ ans = Math.max(2, Math.min(ans, Math.min(a / i, b / j))); } } } return ans; } }
编辑于 今天 18:42:35
以上就是关于问题有两种蛋糕,榴莲蛋糕和冰淇淋蛋糕,其中榴莲蛋糕被分成了 块,冰淇淋蛋糕被分成了 块。总共有 个盘子,每种蛋糕能够整除均分到各个盘子里,要求一个盘子里面不能含有两种蛋糕,每个盘子至少含有2块蛋糕,所有的蛋糕必须放到盘子里面去。求一个盘子里最少有多少块蛋糕 。不能做到的话返回0的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训