有两种蛋糕,榴莲蛋糕和冰淇淋蛋糕,其中榴莲蛋糕被分成了a块,冰淇淋蛋糕被分成了b块。总共有n个盘子,每种蛋糕能够整除均分到各个盘子里,要求一个盘子里面不能含有两种蛋糕,每个盘子至少含有2块蛋糕,所有的蛋糕必须放到盘子里面去。求一个盘子里最少有多少块蛋糕。不能做到的话返回0。
示例1
输入例子:
2,5,4
输出例子:
4
例子说明:
榴莲蛋糕被分成了5块,冰淇淋蛋糕被分成了4块,分别放到2个盘子里面去,1个盘子5块榴莲蛋糕,1个盘子4块冰淇淋蛋糕,1个盘子里最少4块蛋糕,返回4。
示例2
输入例子:
5,3,2
输出例子:
0
例子说明:
榴莲蛋糕被分成了3块,冰淇淋蛋糕被分成了2块,分别放到5个盘子里面去,要求每个盘子至少含有2块蛋糕,无法做到,返回0。
示例3
输入例子:
3,4,6
输出例子:
2
例子说明:
榴莲蛋糕被分成了4块,冰淇淋蛋糕被分成了6块,分别放到3个盘子里面去,要求每个盘子至少含有2块蛋糕,榴莲蛋糕分为2个2块的,分别放进2个盘子,冰淇淋蛋糕6块全部直接放进1个盘子,最少2块,返回2。
我的想法:
1.n个盘子,用for遍历装不同类型蛋糕盘子分法。
要求一个盘子里面不能含有两种蛋糕
且蛋糕所有的蛋糕必须放到盘子里面去
2.用a/i<2||b/(n-i)<2||a%i!=0||b%(n-i)!=0条件判断分法对不对。
其中a/i<2||b/(n-i)<2满足题目条件每个盘子至少含有2块蛋糕
其中a%i!=0||b%(n-i)!=0满足题目条件每种蛋糕能够整除均分到各个盘子里
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<2*n){
return 0;
}
int A=0;
int B=0;
int minA=10000;
int minB=10000;
for(int i=1;i<n;i++){
if(a/i<2||b/(n-i)<2||a%i!=0||b%(n-i)!=0){
continue;
}
A=a/i;
B=b/(n-i);
minA=Math.min(minA,A);
minB=Math.min(minB,B);
}
return Math.min(minA,minB);
}
}