要求:
现有36块砖,由男人、女人、小孩共36个人搬。已知男人一次搬4块,女人一次搬3块,2个小孩抬1块砖,要求一次性刚好搬完。问男人、女人、小孩各多少人?
分析:
由于总共有36个人和36块砖,我们可以设男人有x人,女人有y人,小孩有z人。
根据题目条件,男人搬的砖块数是4x,女人搬的砖块数是3y,小孩搬的砖块数是z/2(因为2个小孩抬1块砖)。
我们需要满足以下两个条件:
人数总和:x + y + z = 36
砖块数总和:4x + 3y + z/2 = 36
由于小孩每次需要2人搬一块砖,所以z必须是偶数。
代码
#include <stdio.h> // 引入标准输入输出库
void main(){ // 主函数入口
int men, women, children; // 定义三个整型变量:men表示男人数量,women表示女人数量,children表示小孩数量
// 外层循环,用于遍历男人数量的可能值(从0到8)
for(men=0; men<9; men++){
// 内层循环,用于遍历女人数量的可能值(从0到11)
for(women=0; women<12; women++){
// 计算小孩的数量,总人数固定为36人
children = 36 - women - men;
// 判断是否满足以下两个条件:
// 1. 男人、女人和小孩的总搬砖量(男人每人4块,女人每人3块,小孩每人半块)是否等于36块
// 2. 小孩的数量是否为偶数(%2==0表示小孩数量为偶数)
if((4*men + 3*women + children/2 == 36) && (children % 2 == 0)){
// 如果满足条件,则输出男人、女人和小孩的数量
printf("男人:%d\n", men);
printf("女人:%d\n", women);
printf("小孩:%d\n", children);
}
}
}
}