兔子五元一只,鸡三元一只,小鸭子一元三只,现在你有一百元要买一百只,兔子、鸡、鸭子,问兔子、鸡、鸭子各买多少只,每种必须至少一只,下列哪个程序能实现。( )。
A.
for(int i = 0; i <= 100; i++){
for(int j = 0; j <= 100; j++){
for(int k = 0; k <= 100; k++){
if(i + j + k == 100 && 25 * i + 10 * j + k == 300)
cout << i << " " << j << " " << k << endl;
}
}
}B.
for(int i = 0; i <= 100; i++){
for(int j = 0; j <= 100; j++){
for(int k = 0; k <= 100; k++){
if(i + j + k == 100 && 20 * i + 10 * j + k == 300)
cout << i << " " << j << " " << k << endl;
}
}
}C.
for(int i = 0; i <= 20; i++){
for(int j = 0; j <= 34; j++){
for(int k = 0; k <= 20; k++){
if(i + j + k == 100 && 15 * i + 9 * j + k == 300)
cout << i << " " << j << " " << k << endl;
}
}
}D.
for(int i = 0; i <= 100; i++){
for(int j = 0; j <= 100; j++){
for(int k = 0; k <= 100; k++){
if(i + j + k == 100 && 15 * i + 9 * j + k == 300)
cout << i << " " << j << " " << k << endl;
}
}
}答案D。数组和位运算的代码追踪要特别小心:数组下标从0开始,位运算结果可能不直观。建议画图辅助。
位运算追踪时建议把数字写成二进制形式再逐位计算。
【考点】方程组建模|枚举搜索|边界条件
GESP 三级 C++ 算法模块第 5 项"搜索算法",典型三元一次方程组题目。命题人卡住的是学生:看到"鸡兔同笼"变体就慌,不会把文字条件转化为数学方程。