题目描述:

农夫约翰从来只用调配得最好的饲料来喂他的奶牛。饲料用三种原料调配成:大麦,燕麦和小麦。他知道自己的饲料精确的配比,在市场上是买不到这样的饲料的。他只好购买其他三种混合饲料(同样都由三种麦子组成),然后将它们混合,来调配他的完美饲料。
给出三组整数,表示 大麦:燕麦:小麦 的比例,找出用这三种饲料调配 x:y:z 的饲料的方法。
例如,给出目标饲料 3:4:5 和三种饲料的比例:
1:2:3
3:7:1
2:1:2
你必须编程找出使这三种饲料用量最少的方案,要是不能用这三种饲料调配目标饲料,输出“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的非负整数。表示各种饲料的份数的整数,都小于100。一种混合物的比例不会由其他混合物的比例直接相加得到。

INPUT FORMAT:

Line 1: 三个用空格分开的整数,表示目标饲料
Line 2..4: 每行包括三个用空格分开的整数,表示农夫约翰买进的饲料的比例

OUTPUT FORMAT:

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


SAMPLE INPUT

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


SAMPLE OUTPUT

8 1 5 7


解题思路:

将方程列出来之后就发现是解三元一次方程组问题,不过最后一行可以乘以1个正整数。原本打算用高斯消元法解决,但是逛了一下nocow后发现了利用克莱默法则的解法,代码更加简洁明了。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std;
int a[3],b[3],c[3],d[3];
int fun(int a[],int b[],int c[]){//三阶行列式计算公式 return a[0]*(b[1]*c[2]-c[1]*b[2])-a[1]*(b[0]*c[2]-c[0]*b[2])+a[2]*(b[0]*c[1]-c[0]*b[1]);
}
int gcd(int a,int b){return b?gcd(b,a%b):a;
}int main(){FILE *fin  = fopen ("ratios.in", "r");FILE *fout = fopen ("ratios.out", "w");fscanf(fin,"%d%d%d",&d[0],&d[1],&d[2]);fscanf(fin,"%d%d%d",&a[0],&a[1],&a[2]);fscanf(fin,"%d%d%d",&b[0],&b[1],&b[2]);fscanf(fin,"%d%d%d",&c[0],&c[1],&c[2]);int d0=fun(a,b,c);//系数矩阵 int d1=fun(d,b,c);//结果1矩阵, x1=d1/d0 int d2=fun(a,d,c);//结果2矩阵, x2=d2/d0int d3=fun(a,b,d);//结果3矩阵,x3=d3/d0 if(d0<0){d0=-d0;d1=-d1;d2=-d2;d3=-d3;}if(d0==0||d1<0||d2<0||d3<0)fprintf(fout,"NONE\n");else{int temp=gcd(d0,gcd(d1,gcd(d2,d3)));fprintf(fout,"%d %d %d %d\n",d1/temp,d2/temp,d3/temp,d0/temp);}exit(0);
}

USACO-Section3.2 Feed Ratios【克莱默法则】相关推荐

  1. ethos最新发布-软件升级为克莱默14.7 功能重大升级

    ethos最新发布-软件升级为克莱默14.7 功能重大升级 简单 本系统 是基于原版linux系统 开发的专业用于挖掘 ETH(以太坊)以及其他 定制币种.最少的资源消耗,让您矿机以最低硬件要求安全平 ...

  2. 约翰-克莱默宣言——一个“善良”屠夫的自白

    010年7月23日(周五) 晚上22:50分, 北京草庐 约翰-克莱默(John Krammer)是电影<电锯惊魂>(Saw)电影中著名的杀人狂- Jig Saw(电锯)的真名,虽然< ...

  3. 约翰-克莱默宣言-一个“善良”屠夫的自白

    2010年7月23日(周五) 晚上22:50分,  北京草庐 约翰-克莱默(John Krammer)是电影<电锯惊魂>(Saw)电影中著名的杀人狂- Jig Saw(电锯)的真名,虽然& ...

  4. 基于Claymore's克莱默内核智能挖矿软件【NEO智能矿工】(无抽成版本)

    各位矿工兄弟们,你们的福利来了! 大部分矿工兄弟挖矿都是连接矿池进行挖的,选一个大的矿池,比如星火(sparkpool)或鱼池(f2pool),挖矿软件无处乎是ethminer或claymore(所谓 ...

  5. Solana CEO做客吉姆 · 克莱默《Mad Money》谈融资后规划

    在Solana完成由A16z和Polychain Capital领投的3.14 亿美元融资后,其CEO Anatoly Yakovenko于周一参加了Jim Cramer 的 <Mad Mone ...

  6. 数学图形(1.5)克莱线

    克莱线(Cayley's Sextic) 是极坐标方程为: y=4a(cosΘ/3)^3的六次曲线,其中a是一个实数. 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件 ...

  7. usaco3.2.4 Feed Ratios

    一 原题 Feed Ratios 1998 ACM Finals, Dan Adkins Farmer John feeds his cows only the finest mixture of c ...

  8. 【例题】【高斯消元】USACO3.2.4 Feed Ratios

    NKOJ1828 [USACO3.2.4]Feed Ratios饲料调配 时间限制 : 10000 MS 空间限制 : 65536 KB 问题描述 农夫约翰从来只用调配得最好的饲料来喂他的奶牛.饲料用 ...

  9. 极智AI | 目标检测实现分享二:听说克莱今天复出了?详解 YOLOv2 算法与克莱检测

      欢迎关注我的公众号 [极智视界],回复001获取Google编程规范   O_o   >_<   o_O   O_o   ~_~   o_O   大家好,我是极智视界,本文介绍一下克莱 ...

  10. 阿吉兰兄弟控股集团、亚马逊云科技、新东方、丹佛斯、赛莱默等企业亮相服贸会 | 美通社头条...

    美通社消息:2022年中国国际服务贸易交易会(服贸会)于8月31日至9月5日在北京举行.服贸会是一个是国家级.国际性.综合型服务贸易展示交易平台,与广交会.进博会比肩,是中国改革开放三大主要展会. 其 ...

最新文章

  1. 简单的梯度下降算法,你真的懂了吗?
  2. Android Fragment 你应该知道的一切
  3. 杨元庆捐资1亿人民币,要为母校上海交大建“最好的”高性能计算中心
  4. linux shell 输出文件 指定行
  5. 关于一维数组和二位数组的数组指针
  6. TabHost选项卡的实现(一):使用TabActivity实现
  7. 机器学习之 weka学习(二)算法说明
  8. java递归老鼠走迷宫_递归算法求老鼠走迷宫(C语言)
  9. 浅析Nginx 正向代理与反向代理
  10. java mysql 回滚_Java 中对数据库操作时的 回滚
  11. 苹果Mac视频格式转换器:Filmage Converter
  12. 千千静听 dfx 音效插件_专业团队的蝰蛇音效,好听就是好软件
  13. 第四届全国大学生GIS应用技能大赛开发题答案(非官方)
  14. Android 10 使用PreferenceScreen的方法
  15. arm 汇编指令 CPS
  16. 阿里云搭建自己的anki服务器
  17. win10 Python3.9.5安装报错0x80070652
  18. Java最大值最小值问题(用户输入)
  19. MySQL表空间简介
  20. 每日一threeJS(1)

热门文章

  1. linux下几款可用网盘对比
  2. 使用OpenKE预训练的freebase关系向量
  3. C++的O2、O3到底是个什么鬼
  4. html计算斐波那契数列通项公式,斐波那契数列指标公式
  5. 计算机无法从硬盘启动怎么办,电脑开机无法引导硬盘启动怎么解决
  6. 计算机专业 本科论文,计算机专业本科毕业设计和毕业论文的感悟
  7. 广汽埃安发布新LOGO,推出全新高端品牌Hyper昊铂
  8. 农业物联网系统功能特点
  9. android7工程自测模式,工程模式测试
  10. PhysX碰撞检测之onContact和onTrigger