zoukankan      html  css  js  c++  java
  • Java 蓝桥杯 算法训练 貌似化学

    **

    貌似化学

    **
    问题描述
      现在有a,b,c三种原料,如果他们按x:y:z混合,就能产生一种神奇的物品d。
      当然不一定只产生一份d,但a,b,c的最简比一定是x:y:z
      现在给你3种可供选择的物品:
      每个物品都是由a,b,c以一定比例组合成的,求出最少的物品数,使得他们能凑出整数个d物品(这里的最少是指三者个数的总和最少)
    输入格式
      第一行三个整数,表示d的配比(x,y,z)
      接下来三行,表示三种物品的配比,每行三个整数(<=10000)。
    输出格式
      四个整数,分别表示在最少物品总数的前提下a,b,c,d的个数(d是由a,b,c配得的)
      目标答案<=10000
      如果不存在满足条件的方案,输出NONE
    样例输入
    3 4 5
    1 2 3
    3 7 1
    2 1 2
    样例输出
    8 1 5 7

    **

    题解:

    **
    其实这就是一道经典的数学问题,小编觉得这道题的难点就是难在题很难读懂,如果有不对的地方还请大佬指正

    import java.util.Scanner;
    
    public class Main{
    	public static void main(String[] args) {
    		int[] num = new int[13];
    		Scanner sc = new Scanner(System.in);
    		for (int i = 1; i < num.length; i++) {
    			num[i] = sc.nextInt();
    		}
    		String str = "";// 这里就是为了保存一下最小的那一组数
    						// 因为完全涉及不到计算领域所以可以用String保存
    		int min = Integer.MAX_VALUE;
    		for (int i = 1; i < 100; i++) {
    			for (int j = 1; j < 100; j++) {
    				for (int j2 = 1; j2 < 100; j2++) {
    					int a = i * num[4] + j * num[7] + j2 * num[10];
    					int b = i * num[5] + j * num[8] + j2 * num[11];
    					int c = i * num[6] + j * num[9] + j2 * num[12];
    					if (a / num[1] == b / num[2] && b / num[2] == c / num[3] && a % num[1] == 0 && b % num[2] == 0
    							&& c % num[3] == 0) {
    						int d = a / num[1];
    						if (min > i + j + j2 + d) {
    							min = i + j + j2 + d;
    							str = i + " " + j + " " + j2 + " " + d;
    						}
    
    					}
    				}
    			}
    
    		}
    		if (min == Integer.MAX_VALUE)
    			System.out.println("NONE");
    		System.out.println(str);
    	}
    
    }
    
    
  • 相关阅读:
    maven 笔记
    面试题53:在排序数组中查找数字
    面试题52:两个链表的第一个公共节点
    面试题51:数组中的逆序对
    面试题50_2:字符流中第一个只出现一次的字符
    面试题50:第一个只出现一次的字符
    面试题49:丑数
    面试题48:最长不含重复字符的连续子字符串
    面试题47:礼物的最大值
    面试题8:二叉树的下一个节点
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13079497.html
Copyright © 2011-2022 走看看