欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面试题__贩卖机只支持硬币支付,且收退......(买饮料)

程序员文章站 2022-03-03 22:38:32
...
/**
 * 贩卖机只支持硬币支付,且收退都只支持10 ,50,100三种面额。一次购买只能出一瓶可乐,且投钱和找零都遵循优先使用大钱的原则,
 * 需要购买的可乐数量是m, 其中手头拥有的10、50、100的数量分别为a、b、c,可乐的价格是x(x是10的倍数) 。
 * 请计算出需要投入硬币次数?
 *
 * @author hqh
 * @create 2021/6/21 11:43
 * @description
 * @mail
 */
public class BuyWater {
    static int m, x, a, b, c;
    static int money, ca, cb, cc, result;

    public static void main(String[] args) {
        inData();
        if (100 * a + 50 * b + 10 * c < m * x) {
            System.out.println("穷逼,滚");
        } else {
        	//需投入金额不是100倍数则投入数量+1
            ca = money % 100 > 0 ? money / 100 + 1 : money / 100;
            //需投入数量<=持有100面额数量,则全投入100,并计算找零
            if (ca <= a) {
                result = money % 100 > 0 ? 100 - money % 100 : 0;
                print(ca, 0, 0, result);
            } else {
            	//100面额不足,全部投入100面额在计算50面额
                money -= 100 * a;
                cb = money % 50 > 0 ? money / 50 + 1 : money / 50;
                if (cb <= b) {
                    result = money % 50 > 0 ? 50 - money % 50 : 0;
                    print(a, b, cc, result);
                } else {
                	//50面额不足,投入10面额,可乐是10的倍数,无需找零
                    cc = (money - 50 * b) / 10;
                    print(a, b, cc, 0);
                }
            }
        }
    }
	//用于输入价格,数量,自身硬币数量
    static void inData() {
        Scanner sc = new Scanner(System.in);
        System.out.println("price?");
        m = sc.nextInt();
        System.out.println("num?");
        x = sc.nextInt();
        System.out.println("a");
        a = sc.nextInt();
        System.out.println("b");
        b = sc.nextInt();
        System.out.println("c");
        c = sc.nextInt();
        money = m * x;
    }
	//用于打印投入数量和找零数量
    static void print(int a, int b, int c, int result) {
        System.out.println("a=" + a + ";b=" + b + ";c=" + c);
        if (result == 0) {
            System.out.println("找零 50 数量:" + 0 + "找零 10 数量" + 0);
        } else if (result >= 50) {
            System.out.println("找零 50 数量:" + 1 + "找零 10 数量" + (result - 50) / 10);
        } else {
            System.out.println("找零 50 数量:" + 0 + "找零 10 数量" + (result) / 10);
        }
    }
}