某工地需要搬运砖块,已知男人一人搬 3 块,女人一人搬 2 块,小孩两人搬1块。
如果想用 n 人正好搬 n 块砖(注意小孩的人数只能是偶数),问有多少种搬法?
(注意当某类人数为 0 时,也是合理的方案)
输入格式:
在一行中输入一个正整数n。
输出格式:
直接输出方案的数目。
输入样例1:
45
输出样例1:
4
输入样例2:
4
输出样例2:
0
代码长度限制
16 KB
时间限制
1600 ms
内存限制
61 MB
思路:
三重循环:
使用枚举法,对男人,女人和小孩分别进行枚举,然后判断他们搬砖的数量是否等于n,总人数是否等于n,小孩的人数是否等于偶数个。
代码
#include <stdio.h>
int main() {
int n, i, j, k, count = 0;
scanf("%d", &n);
for (i = 0; i <= n/3; i++) { // 枚举男人数量 i
for (j = 0; j <= n/2; j++) { // 枚举女人数量 j
for (k = 0; k <= n; k++) { // 枚举小孩数量 k
if (i + j + k == n && i * 3 + j * 2 + k / 2 == n && k % 2 == 0) {
count++;
}
}
}
}
printf("%d\n", count);
return 0;
}