【USACO题库】3.2.4 Feed Ratios饲料调配
来源:互联网 发布:开淘宝店铺主要是什么 编辑:程序博客网 时间:2024/05/16 19:26
- 【USACO题库】3.2.4 Feed Ratios饲料调配 (Standard IO)
时间限制: 1000 ms 空间限制: 262144 KB 具体限制
题目描述
农夫约翰从来只用调配得最好的饲料来为他的奶牛。饲料用三种原料调配成:大麦,燕麦和小麦。他知道自己的饲料精确的配比,在市场上是买不到这样的饲料的。他只好购买其他三种混合饲料(同样都由三种麦子组成),然后将它们混合,来调配他的完美饲料。
给出三组整数,表示 大麦:燕麦:小麦 的比例,找出用这三种饲料调配 x:y:x 的饲料的方法。
例如,给出目标饲料 3:4:5 和三种饲料的比例:
1:2:3 3:7:1 2:1:2
你必须编程找出使这三种饲料用量最少的方案,要是不能用这三种饲料调配目标饲料,输出“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。一种混合物的比例不会由其他混合物的比例直接向加得到。
PROGRAM NAME: ratios
INPUT FORMAT
Line 1: 三个用空格分开的整数,表示目标饲料
Line 2..4: 每行包括三个用空格分开的整数,表示农夫约翰买进的饲料的比例
SAMPLE INPUT (file ratios.in)
3 4 5 1 2 3 3 7 1 2 1 2
OUTPUT FORMAT
输出文件要包括一行,这一行要么有四个整数,要么是“NONE”。前三个整数表示三种饲料的份数,用这样的配比可以得到目标饲料。第四个整数表示混合前三种饲料后得到的目标饲料的份数。
SAMPLE OUTPUT (file ratios.out)
8 1 5 7
一道第三部分的水题;
请注意这句话:
表示饲料比例的整数,都是小于100(数量级)的非负整数。表示各种饲料的份数的整数,都小于100。一种混合物的比例不会由其他混合物的比例直接向加得到。
有三种饲料,100^3=10000,不会时超!
然而有0的情况。。。。。
对于0要特殊处理;
不能出现div 0;mod 0;
可以选一个非0数先除得出份数,再反过来乘判断,有效避免0.
代码(请勿抄袭)
var i,j,k,m,n,o,p,l,x,y,xx,yy,xxx,yyy,xxxx,yyyy,min,z,zz,zzz,zzzz,q,a,b,c,aa:longint;function work(o,p,q,x,y,z:longint):boolean;var l,r,mid,cun:longint;begin if (o<x) or (p<y) or (q<z) then exit(false); if (x<>0) then begin cun:=o div x; if (cun*y=p) and (cun*z=q) then exit(true) else exit(false); end else if (y<>0) then begin cun:=p div y; if (cun*x=o) and (cun*z=q) then exit(true) else exit(false); end else if (z<>0) then begin cun:=q div z; if (cun*x=o) and (cun*y=p) then exit(true) else exit(false); end;end;begin readln(x,y,z,xx,yy,zz,xxx,yyy,zzz,xxxx,yyyy,zzzz); min:=maxlongint; for i:=0 to 100 do for j:=0 to 100 do for k:=0 to 100 do begin o:=xx*i+xxx*j+xxxx*k; p:=yy*i+yyy*j+yyyy*k; q:=zz*i+zzz*j+zzzz*k; if (x<>0) and (o mod x<>0) then continue; if (y<>0) and (p mod y<>0) then continue; if (z<>0) and (q mod z<>0) then continue; if work(o,p,q,x,y,z) and (i+j+k<min) then begin min:=i+j+k; a:=i;b:=j;c:=k; aa:=o div x; end; end; if min=maxlongint then writeln('NONE') else writeln(a,' ',b,' ',c,' ',aa); close(input);close(output);end.
- 【USACO题库】3.2.4 Feed Ratios饲料调配
- 【USACO题库】3.2.4 Feed Ratios饲料调配
- [USACO3.2]饲料调配 Feed Ratios
- USACO 3.2.4 feed ratios
- USACO 3.2.4 Feed Ratios
- USACO 3.2 Feed Ratios (ratios)
- USACO--3.2Feed Ratios
- usaco Chapter 3 section 3.2 Feed Ratios
- USACO-Section 3.2 Feed Ratios(枚举)
- 【搜索】【USACO】Feed Ratios
- usaco Feed Ratios
- USACO/ratios 3.2.4
- USACO Feed Ratios, Magic Squares
- USACO Feed Ratios 解题报告
- USACO section 3.2 Feed Ratios(高斯定理)
- [U]3.2.4 Feed Ratios 枚举
- USACO Section 3.2 Feed Ratios - 三层for循环就ok了!
- Feed Ratios
- QT5 QThread
- Kotlin学习笔记(一)
- AsyncTask+请求数据
- Spring 乱码问题
- 我所知道的几种display:table-cell的应用
- 【USACO题库】3.2.4 Feed Ratios饲料调配
- 随笔杂谈
- python学习之 字符串前'r'的用法
- math
- 工作生活、写代码的程序员
- 苹果股价盘初下挫逾0.6% 新款iPhone即将发布
- iOS 自定义导航栏pop返回手势,全屏右滑返回
- ubuntu16.04
- 37、java常用类-Arrays