一、题目描述
小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供10个每袋和14个每袋的包装(包装不可拆分)。可是小易现在只想恰好买n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买
要求:
I.输入值n为整数,且1<=n<=200
II.输出值为整数表示最少购买的袋数,如不会购买,则输出-1
举例:输入值35,输出值为-1;输入值为34,输出值为3
二、思路
满足10x+14y=n的最小的 x+y,使用for循环遍历,找到符合要求的x,y
三、代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n = in.nextInt();
System.out.println(minOrder(n));
}
}
public static int minOrder(int n){
int min = n;
//最多买n/10袋
for(int i=0;i<n/10;i++){//尽可能多的买14个每袋
if((n-10*i)%14 == 0){//可以保证i+j最小
int j = (n-10*i)/14;
min = min>(i+j)?(i+j):min;
return min;
}
}
//没有合适的整数i,j使得10i+14j=n
return -1;
}
}