问题标题: 酷町堂:2864 配饲料

0
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;
}

 


0
已采纳
丁浩然
丁浩然
新手光能
新手光能

你对一下这一段


0
我要回答