[USACO]Feed Ratios

题意:告诉你目标饲料的原料的用量,问你有三种饲料,没种原料比例都不同,问你是否能配比出目标饲料

解题思路:纯暴力

解题代码:

 1 // File Name: ratios1.c
 2 // Author: darkdream
 3 // Created Time: 2014年03月18日 星期二 08时33分08秒
 4 /*
 5 ID: dream.y1
 6 PROG: ratios
 7 LANG: C++
 8 */
 9 #include<stdio.h>
10 #include<string.h>
11 #include<stdlib.h>
12 #include<time.h>
13 #include<math.h>
14 #include<limits.h>
15 int ans[5];
16 int a[4][4];
17 int stand[4];
18 int sum = INT_MAX;
19 int gcd(int a, int b )
20 {
21   if(a == 0 && b == 0 )
22       return 1;
23   return  b == 0 ? a:gcd(b,a%b);
24 }
25 int main(){
26 
27    freopen("ratios.in","r",stdin);
28    freopen("ratios.out","w",stdout);
29     for(int i =1 ;i <= 3; i++)
30         scanf("%d",&stand[i]);
31     for(int i = 1;i <= 3;i ++)
32          for(int j = 1;j <= 3;j ++)
33          {
34              scanf("%d",&a[i][j]);
35          }
36     int bok = 0 ;
37     for(int i = 0;i <= 100;i ++)
38         for(int j = 0;j <= 100; j ++)
39             for(int ij = 0;ij <= 100 ;ij ++)
40             {
41                 if(!(i || j || ij))
42                     continue;
43                int temp[4];
44                temp[1] = i * a[1][1] + j * a[2][1] + ij * a[3][1];
45                temp[2] = i * a[1][2] + j * a[2][2] + ij * a[3][2];
46                temp[3] = i * a[1][3] + j * a[2][3] + ij * a[3][3];
47                int  ok = 0 ; 
48                int pp;  
49                 for(int ji =1;ji <= 3;ji ++)
50                      if(stand[ji] != 0 && temp[ji] / stand[ji] != 0)
51                          pp = temp[ji]/ stand[ji];
52                 for(int  ji = 1;ji <= 3;ji ++)
53                     if(stand[ji] *pp != temp[ji])
54                     {
55                        ok = 1; 
56                        break;
57                     }
58             //  if(i == 2 && j == 0  && ij == 1)
59             //       printf("%d %d %d
",temp[1],temp[2],temp[3]);
60                if(!ok)
61                {
62                  bok = 1; 
63                  int tsum  = i + j + ij;
64                  if(tsum < sum )
65                  {
66                    sum = tsum; 
67                    ans[1] = i ; 
68                    ans[2] = j ; 
69                    ans[3] = ij;
70                    ans[4] = pp;
71                   }
72                }
73 
74             }
75     if(bok)
76     {
77     for(int i = 1;i <= 4;i ++)
78         printf(i == 1?"%d":" %d",ans[i]);
79       printf("
");
80     }
81     else printf("NONE
");
82 return 0 ;
83 }
View Code
没有梦想,何谈远方
原文地址:https://www.cnblogs.com/zyue/p/3606940.html