农夫约翰从来只用调配得最好的饲料来为他的奶牛。
饲料用三种原料调配成:大麦,燕麦和小麦。他知道自己的饲料精确的配比,在市场上是买不到这样的饲料的。他只好购买其他三种混合饲料(同样都由三种麦子组成),然后将它们混合,来调配他的完美饲料。
给出三组整数,表示 大麦:燕麦:小麦 的比例,找出用这三种饲料调配 x:y:z 的饲料的方法。
例如,给出目标饲料 3:4:5 和三种饲料的比例:
1:2:3 3:7:1 2:1:2 123
你必须编程找出使这三种饲料用量最少的方案,要是不能用这三种饲料调配目标饲料,输出’NONE’。'用量最少’意味着三种饲料的用量(整数)的和必须最小。
对于上面的例子,你可以用8份饲料1,2份饲料2,和5份饲料3,来得到7份目标饲料: 8*(1:2:3) + 1*(3:7:1) + 5*(2:1:2) = (21:28:35) = 7*(3:4:5)
以上数字中,表示饲料比例的整数都是小于100(数量级)的非负整数,表示各种饲料的份数的整数都小于100。一种混合物的比例不会由其他混合物的比例直接相加得到。
Line 1: 三个用空格分开的整数,表示目标饲料
Line 2…4: 每行包括三个用空格分开的整数,表示农夫约翰买进的饲料的比例
输出文件要包括一行,这一行要么有四个整数,要么是’NONE’。前三个整数表示三种饲料的份数,用这样的配比可以得到目标饲料。第四个整数表示混合前三种饲料后得到的目标饲料的份数。
3 4 5 1 2 3 3 7 1 2 1 2 1234
8 1 5 7 1
暴力的话还是挺简单的,就是要注意0的特殊情况
#include <bits/stdc++.h> using namespace std; int main() {int target[3] = {0};int mix[3][3] = {0};int a, b, c, times;// 获取输入数据for (int i = 0; i < 3; i++) {cin >> target[i];}for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {cin >> mix[i][j];}}bool can = false;for (int i = 0; i <= 100; i++) {for (int j = 0; j <= 100; j++) {for (int k = 0; k <= 100; k++) {// 不能同时为0if (i == 0 && j == 0 && k == 0) continue;// 当前各种饲料的总数a = i * mix[0][0] + j * mix[1][0] + k * mix[2][0];b = i * mix[0][1] + j * mix[1][1] + k * mix[2][1];c = i * mix[0][2] + j * mix[1][2] + k * mix[2][2];// 注意0的特殊情况if (a && target[0]) times = a / target[0];if (b && target[1]) times = b / target[1];if (c && target[2]) times = c / target[2];if (times * target[0] == a && times * target[1] == b && times * target[2] == c) {printf("%d %d %d %dn", i, j, k, times);// 题目要求最小,所以要提前跳出循环can = true;}}if (can) break;}if (can) break;}if (!can) cout << "NONE" << endl;return 0; }
123456789101112131415161718192021222324252627282930313233343536373839404142434445欢迎大伙私信或者评论区交流讨论
相关知识
东华OJ 基础题80 饲料调配
饲料调配的方法
鹦鹉饲料怎么做 鹦鹉饲料怎么调配
一种宠物饲料生产用原料调配装置的制作方法
如何调配笼鸟饲料
笼鸟饲料调配方法
鱼食怎么调配
饲料调配算法
抓蛐蛐的诱饵饲料怎样调配,爬宠蛐蛐饲料
昆明东华宠物市场
网址: 东华OJ 基础题80 饲料调配 https://m.mcbbbk.com/newsview1044852.html
上一篇: USACO 3.2.4 Feed |
下一篇: 自己怎么做幼鹦鹉料 |