**

貌似化学

**

问题描述

  现在有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);
} }
05-11 13:51