求助一道题
查看原帖
求助一道题
255169
__LePetitPrince__楼主2020/7/14 10:10

在洛谷上没找到


题目描述 Description

鸡尾酒可以由3种作为基本配方的酒按一定的比例混合调制而成。现在调酒师JIM在调酒时,发现自己要将三种酒精按X:Y:Z的方式去调制鸡尾酒,但3种酒精已经用完了,现在只有选择3种按其它比例混合的这三种酒去重新配置以得到X:Y:Z的鸡尾酒。

比如他想要配置3:4:5的鸡尾酒,但是只有1:2:3,3:7:1,2:1:2 三种鸡尾酒供他去调酒。所以要么无法配置出3:4:5的鸡尾酒,输出“NONE”;否则输出最少需要三种鸡尾酒各多少来调制出想要的比例的鸡尾酒,也就是说三种其它鸡尾酒所用的份数之和最小。

对于上面的例子,你可以用8份鸡尾酒1,1份鸡尾酒2,和5份鸡尾酒3,来得到7份目标鸡尾酒:

8×(1:2:3) + 1×(3:7:1) + 5×(2:1:2) = (21:28:35) = 7×(3:4:5)。

数据保证三种鸡尾酒中,没有一种鸡尾酒可以由另外两种鸡尾酒直接混合得到,并且目标鸡尾酒对每种鸡尾酒的使用最多不会超过100份。

输入描述 Input Description

第一行,三个用空格分开的整数,表示目标鸡尾酒对于三种基本配方的要求

每行包括三个用空格分开的整数,表示JIM拥有其它三种鸡尾酒的所含基本配方的比例

输出描述 Output Description

输出文件要包括一行,这一行要么有四个整数,要么是“NONE”。前三个整数表示三种其它鸡尾酒的份数,用这样的配比可以得到目标鸡尾酒。第四个整数表示混合三种鸡尾酒后得到的目标鸡尾酒的份数。

样例输入 Sample

Input

3 4 5
1 2 3
3 7 1
2 1 2

样例输出 Sample Output

8 1 5 7

我的程序:

#include <iostream>
using namespace std;
int a,b,c;
int x1,y1,z1;
int x2,y2,z2;
int x3,y3,z3;
int main() {
    cin >> a >> b >> c;
    cin >> x1 >> y1 >> z1;
    cin >> x2 >> y2 >> z2;
    cin >> x3 >> y3 >> z3;
    if (a == 0 && (x1 != 0 || x2 != 0 || x3 != 0)) {
    	cout << "NONE" << endl;
    	return 0;
	}
	if (b == 0 && (y1 != 0 || y2 != 0 || y3 != 0)) {
    	cout << "NONE" << endl;
    	return 0;
	}
	if (c == 0 && (z1 != 0 || z2 != 0 || z3 != 0)) {
    	cout << "NONE" << endl;
    	return 0;
	}
    for (int i = 1; i <= 100; i++) {
        for (int j = 1; j <= 100; j++) {
            for (int k = 1; k <= 100; k++) {
                int p = x1 * i + x2 * j + x3 * k;
                int q = y1 * i + y2 * j + y3 * k;
                int r = z1 * i + z2 * j + z3 * k;
                if (p % a != 0 || q % b != 0 || r % c != 0) continue;
                else {
                    if (p / a == q / b && q / b == r / c && p / a == r / c) {
                        cout << i << ' ' << j << ' ' << k;
                        cout << ' ' << p / a;
                        return 0;
                    }
                }
            } 
        }
    }
    cout << "NONE";
    return 0;
} 

WA60分

2020/7/14 10:10
加载中...