PTA 7-145 搬砖
分数 10
作者 C课程组
单位 湖南工程学院
某工地需要搬运砖块,已知男人一人搬 3 块,女人一人搬 2 块,小孩两人搬1块。
如果想用 n 人正好搬 n 块砖(注意小孩的人数只能是偶数),问有多少种搬法?
(注意当某类人数为 0 时,也是合理的方案)
输入格式:
在一行中输入一个正整数n。
输出格式:
直接输出方案的数目。
输入样例1:
45
输出样例1:
4
输入样例2:
4
输出样例2:
0
代码长度限制
16 KB
时间限制
1600 ms
内存限制
61 MB
代码:
#include <stdio.h>
int main(){
int brick, count = 0; //定义砖块数量和多少方案
int male, female, child; //定义男人,女人,小孩
scanf( "%d", &brick ); //输入砖块数量
for( male = 0; male <= brick/3; male++ ){ //男人数
for( female = 0; female <= brick/2; female++ ){ //女人数
for( child = 0; child <= brick; child+=2 ){ //小孩数量,加二是两个小孩才能板砖一块
//男人一人搬 3 块,女人一人搬 2 块,小孩两人搬1块
if( male + female + child == brick && child % 2 == 0 && male * 3 + female * 2 + child / 2 == brick )
count++;
}
}
}
printf( "%d\n", count );
return 0;
}
解题思路
搬砖的步骤:
step 1:输入砖块数量;
step 2:根据男人数,女人数和小孩数(两个小孩才能板砖一块)分别得男人一人搬 3 块,女人一人搬 2 块,小孩两人搬1块,方案加一;
step 3:输出方案的数目。
归属知识点
循环结构,选择结构