USACO 3.2 Feed Ratios

TASK: ratios
LANG: C++

Compiling...
Compile: OK

Executing...
   Test 1: TEST OK [0.027 secs, 3028 KB]
   Test 2: TEST OK [0.027 secs, 3028 KB]
   Test 3: TEST OK [0.027 secs, 3028 KB]
   Test 4: TEST OK [0.027 secs, 3028 KB]
   Test 5: TEST OK [0.000 secs, 3028 KB]
   Test 6: TEST OK [0.000 secs, 3028 KB]

All tests OK.
1 /*
2 PROG: ratios
3 ID: jiafeim1
4 LANG: C++
5 */
6 #include <algorithm>
7 #include <iostream>
8 #include <fstream>
9 #include <string>
10 using namespace std;
11
12 int target[3];
13 int cur[3][3];
14
15 int main()
16 {
17 std::ofstream fout("ratios.out");
18 std::ifstream fin("ratios.in");
19
20 fin>>target[0]>>target[1]>>target[2];
21
22 for(int i = 0;i!=3;++i)
23 {
24 fin>>cur[i][0]>>cur[i][1]>>cur[i][2];
25 }
26 int min = 9999999;
27 int r1,r2,r3;
28 int fen;
29 bool haveDo = false;
30 for(int x1 = 0;x1<=100;++x1)
31 for(int x2=0;x2<=100;++x2)
32 for(int x3=0;x3<=100;++x3)
33 {
34 if(x1 == 0 && x2 == 0&&x3==0) continue;
35 int d1 = -1,d2 = -2,d3 = -3;
36 if(target[0]==0)
37 {
38 if(x1*cur[0][0]+x2*cur[1][0]+x3*cur[2][0] == 0)
39 d1 = -4;
40 else
41 continue;
42 }
43 else
44 {
45 if((x1*cur[0][0]+x2*cur[1][0]+x3*cur[2][0])%target[0] == 0)
46 d1 = (x1*cur[0][0]+x2*cur[1][0]+x3*cur[2][0])/target[0];
47 else
48 continue;
49 }
50 if(target[1]==0)
51 {
52 if(x1*cur[0][1]+x2*cur[1][1]+x3*cur[2][1] == 0)
53 d1 = -4;
54 else
55 continue;
56 }
57 else
58 {
59 if((x1*cur[0][1]+x2*cur[1][1]+x3*cur[2][1])%target[1] == 0)
60 d2 = (x1*cur[0][1]+x2*cur[1][1]+x3*cur[2][1])/target[1];
61 else
62 continue;
63 }
64 if(target[2]==0)
65 {
66 if(x1*cur[0][2]+x2*cur[1][2]+x3*cur[2][2] == 0)
67 d3 = -4;
68 else
69 continue;
70 }
71 else
72 {
73 if((x1*cur[0][2]+x2*cur[1][2]+x3*cur[2][2])%target[2] == 0)
74 d3 = (x1*cur[0][2]+x2*cur[1][2]+x3*cur[2][2])/target[2];
75 else
76 continue;
77 }
78
79 if(d1 == -4)
80 {
81 if(d2!=-4)
82 d1 = d2;
83 if(d3!=-4)
84 d1 = d3;
85 }
86 if(d2 == -4)
87 {
88 if(d1!=-4)
89 d2 = d1;
90 if(d3!=-4)
91 d2 = d3;
92 }
93 if(d3 == -4)
94 {
95 if(d1!=-4)
96 d3 = d1;
97 if(d2!=-4)
98 d3 = d2;
99 }
100 if(d1 == d2 && d2 == d3)
101 {
102 if(x1+x2+x3<min)
103 {
104 haveDo = true;
105 min = x1+x2+x3;
106 r1=x1;
107 r2=x2;
108 r3=x3;
109 fen= (x1*cur[0][0]+x2*cur[1][0]+x3*cur[2][0]) /target[0];
110 }
111 }
112 }
113 if(haveDo)
114 fout<<r1<<" "<<r2<<" "<<r3<<" "<<fen<<endl;
115 else
116 fout<<"NONE"<<endl;
117 fin.close();
118 fout.close();
119 return 0;
120 }
posted @ 2011-05-13 23:22  幻魇  阅读(253)  评论(0编辑  收藏  举报