- 題目描述:
-
用小於等於n元去買100只雞,大雞5元/只,小雞3元/只,還有1/3元每只的一種小雞,分別記為x只,y只,z只。編程求解x,y,z所有可能解。
- 輸入:
-
測試數據有多組,輸入n。
- 輸出:
-
對於每組輸入,請輸出x,y,z所有可行解,按照x,y,z依次增大的順序輸出。
- 樣例輸入:
-
40
- 樣例輸出:
-
x=0,y=0,z=100 x=0,y=1,z=99 x=0,y=2,z=98 x=1,y=0,z=99
解題思路:
先將題意轉化為一個數學問題,然后列出相應的方程,化簡方程,然后通過對剩下的變量進行窮舉,輸出符合條件的結果。
代碼:1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int main() 5 { 6 int n; 7 while(cin >> n) 8 { 9 for(int i = 0; i <= 100; i++) 10 for(int j = 0; j <= 100; j++) 11 { 12 if((14 * i + 8 * j) <= n * 3 - 100) 13 printf("x=%d,y=%d,z=%d\n",i,j,100-i-j); 14 else 15 break; 16 } 17 } 18 return 0; 19 }
收獲:
1. C++的cout輸出比C中的printf慢!!!在這個題目中分別為10ms和50ms...
2. 優先將題目轉化為數學問題進行化簡解決,然后在通過程序實現,不要一上來就悶頭寫代碼。
3. 方程中的未知數可以在程序中拿窮舉來解決