0
已解决
曹志
资深守护
资深守护
题目描述 Description
某品牌饲料可以由4种作为基本配方的饲料按一定的比例混合而成。现在农夫在配置饲料时,发现自己要将四种饲料按W:X:Y:Z的方式配置,但这4种饲料已经用完了,现在只有选择4种按其它比例混合的这四种饲料去重新配置以得到W:X:Y:Z的饲料。
比如他想要配置3:4:5:6的饲料,但是只有1:2:3:5,3:7:6:1,2:1:3:2,1:2:5:7 四种饲料供他去配置。所以要么无法配置出3:4:5:6的饲料,输出“NONE”;否则输出最少需要四种饲料各多少来调制出想要的比例的饲料,也就是说四种其它饲料所用的份数之和最小。
输入描述 Input Description
第一行,四个用空格分开的整数,表示目标饲料对于四种基本配方的要求
接下来四行,每行包括四个用空格分开的整数,表示农夫拥有其它四种饲料的所含基本配方的比例
输出描述 Output Description
输出文件要包括一行,这一行要么有五个整数,要么是“NONE”。前四个整数表示四种其它鸡尾酒的份数,用这样的配比可以得到目标饲料。第五个整数表示混合三种饲料后得到的目标饲料的份数。
样例输入 Sample Input
1 2 3 4
1 1 1 1
0 1 1 1
0 0 1 1
0 0 0 1
样例输出 Sample Output
1 1 1 1 1
数据范围及提示 Data Size & Hint
每种混合饲料使用不会超过100份
请问哪里错了? (代码冗长,请dalao耐心阅读)
#include<iostream>
using namespace std;
struct T{
int k[4];
}a[6];
int ans=0;
int main()
{
ios::sync_with_stdio(0);
for(int i=0;i<5;i++)
for(int j=0;j<4;j++)
cin>>a[i].k[j];
for(int w=0;w<=100;w++)
for(int x=0;x<=100;x++)
for(int y=0;y<=100;y++)
for(int z=0;z<=100;z++)
{
a[5].k[0]=w*a[0].k[0]+x*a[1].k[0]+y*a[2].k[0]+z*a[3].k[0];
a[5].k[1]=w*a[0].k[1]+x*a[1].k[1]+y*a[2].k[1]+z*a[3].k[1];
a[5].k[2]=w*a[0].k[2]+x*a[1].k[2]+y*a[2].k[2]+z*a[3].k[2];
a[5].k[3]=w*a[0].k[3]+x*a[1].k[3]+y*a[2].k[3]+z*a[3].k[3];
if(a[5].k[0]*a[0].k[1]==a[5].k[1]*a[0].k[0]&&a[5].k[1]*a[0].k[2]==a[5].k[2]*a[0].k[1]&&a[5].k[2]*a[0].k[2]==a[0].k[3]*a[0].k[3]&&a[5].k[0]>=a[0].k[0])
{
cout<<w<<' '<<x<<' '<<y<<' '<<z<<' '<<a[5].k[0]/a[0].k[0];
return 0;
}
}
cout<<"NONE";
return 0;
}