在洛谷上没找到
鸡尾酒可以由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份。
第一行,三个用空格分开的整数,表示目标鸡尾酒对于三种基本配方的要求
每行包括三个用空格分开的整数,表示JIM拥有其它三种鸡尾酒的所含基本配方的比例
输出文件要包括一行,这一行要么有四个整数,要么是“NONE”。前三个整数表示三种其它鸡尾酒的份数,用这样的配比可以得到目标鸡尾酒。第四个整数表示混合三种鸡尾酒后得到的目标鸡尾酒的份数。
Input
3 4 5
1 2 3
3 7 1
2 1 2
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分