USACO chapter 3 section 3 Feed Ratios
16870 ワード
USACO chapter 3 section 3 Feed Ratios
Here are the test data inputs:
USER: tian tianbing [tbbd4261]
TASK: ratios
LANG: C++
Compiling...
Compile: OK
Executing...
Test 1: TEST OK [0.043 secs, 3016 KB]
Test 2: TEST OK [0.032 secs, 3016 KB]
Test 3: TEST OK [0.032 secs, 3016 KB]
Test 4: TEST OK [0.022 secs, 3016 KB]
Test 5: TEST OK [0.022 secs, 3016 KB]
Test 6: TEST OK [0.032 secs, 3016 KB]
All tests OK.
Your program ('ratios') produced all correct answers! This is your
submission #18 for this problem. Congratulations!
Here are the test data inputs:
------- test 1 -------
5 8 0
3 5 4
1 3 0
6 2 0
------- test 2 -------
3 4 5
1 2 3
3 7 1
2 1 2
------- test 3 -------
20 22 24
4 5 5
9 5 6
12 12 14
------- test 4 -------
80 85 80
98 97 96
89 87 88
78 79 80
------- test 5 -------
99 99 99
1 0 0
0 1 0
0 0 1
------- test 6 -------
93 95 97
98 0 0
0 98 0
0 0 98
Keep up the good work! Thanks for your submission!
, 18 , fin , C
。
100 , 0 , 。
/*
ID:tbbd4261
PROG:ratios
LANG:C++
*/
#include < fstream >
#include < stdio.h >
using namespace std;
// fstream fin("ratios.in");
ofstream fout( " ratios.out " );
int main()
{
int food[ 4 ][ 4 ];
freopen( " ratios.in " , " r " ,stdin);
freopen( " ratios.out " , " w " ,stdout);
int i,j,k,minsum = 0xffffff ,a = 0 ,b = 0 ,c = 0 ,d = 0 ;
for (i = 0 ; i < 4 ; i ++ )
for (j = 1 ; j <= 3 ; j ++ )
scanf( " %d " , & food[i][j]);
int n1,n2,n3;
bool f1,f2,f = false ;
for (i = 0 ; i <= 100 ; i ++ )
for (j = 0 ; j <= 100 ; j ++ )
for (k = 0 ; k <= 100 ; k ++ ){
n1 = food[ 1 ][ 1 ] * i + food[ 2 ][ 1 ] * j + food[ 3 ][ 1 ] * k;
n2 = food[ 1 ][ 2 ] * i + food[ 2 ][ 2 ] * j + food[ 3 ][ 2 ] * k;
n3 = food[ 1 ][ 3 ] * i + food[ 2 ][ 3 ] * j + food[ 3 ][ 3 ] * k;
int t = 0 ; f1 = false ; f2 = false ;
if (food[ 0 ][ 1 ] == 0 ){
f1 = true ;
if (n1 != 0 ) continue ;
} else {
if (n1 % food[ 0 ][ 1 ] != 0 ) continue ;
t = n1 / food[ 0 ][ 1 ];
}
if (food[ 0 ][ 2 ] == 0 ){
f2 = true ;
if (n2 != 0 ) continue ;
} else {
if (n2 % food[ 0 ][ 2 ] != 0 ) continue ;
if (f1 == true )t = n2 / food[ 0 ][ 2 ];
else if (n2 / food[ 0 ][ 2 ] != t) continue ;
}
if (food[ 0 ][ 3 ] == 0 ){
if (n3 != 0 ) continue ;
} else {
if (n3 % food[ 0 ][ 3 ] != 0 ) continue ;
if (f1 && f2)t = n3 / food[ 0 ][ 3 ];
if ((f1 == false || f2 == false ) && n3 / food[ 0 ][ 3 ] != t) continue ;
}
if ( n1 + n2 + n3 < minsum && (n1 || n2 || n3)){
f = true ;
minsum = n1 + n2 + n3;
a = i; b = j; c = k; d = t;
}
}
if (f) fout << a << ' ' << b << ' ' << c << ' ' << d << endl;
else fout << " NONE " << endl;
return 0 ;
}