小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。
输入描述: 输入一个整数n,表示小易想购买n(1 ≤ n ≤ 100)个苹果
输出描述: 输出一个整数表示最少需要购买的袋数,如果不能买恰好n个苹果则输出-1
输入例子: 20
输出例子: 3
思路:容量为8的袋子有a个,容量为b的袋子有b个。则一共需要袋子a+b个;
根据题目要求可得:8*a+6*b=n ——> n-8*a=6*b ——> (n-8*a) % 6 = 0
所以代码如下:
import java.util.Scanner;
public class Test {
public static int buyNApple(int n)
{
if (n % 2 == 1)
{
return -1;
}
int a = 0;
int b = 0;
for (int i=n/8; i>=0; i--)
{
if ((n-8*i)%6 == 0)
{
a = i;
b = (n-8*i)/6;
// System.out.println("a = :"+a);
// System.out.println("b = :"+b);
break;
}
}
return a+b;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext())
{
int n = scanner.nextInt();
System.out.println(buyNApple(n));
}
}
}
执行结果: