一 穷举问题-搬砖
某工地需要搬运砖块,已知男人一人搬3
块,女人一人搬2
块,小孩两人搬1
块。如果想用n
人正好搬n
块砖,问有多少种搬法?
输入格式:
输入在一行中给出一个正整数n
。
输出格式:
输出在每一行显示一种方案,按照"men = cnt_m, women = cnt_w, child = cnt_c
"的格式,输出男人的数量cnt_m
,女人的数量cnt_w
,小孩的数量cnt_c
。请注意,等号的两侧各有一个空格,逗号的后面也有一个空格。
如果找不到符合条件的方案,则输出"None
"
输入样例:
45
输出样例:
men = 0, women = 15, child = 30
men = 3, women = 10, child = 32
men = 6, women = 5, child = 34
men = 9, women = 0, child = 36
#include<stdio.h>
int main(){
int n=0;
scanf("%d",&n);
int cnt_m=0;
int cnt_w=0;
int cnt_c=0;
int i,j,k;
int cnt=0;
for(i=0;i<=n;i++){
for(j=0;j<=n;j++){
k=n-i-j;
if((3*i+2*j+(1.0/2)*k==n)&&k%2==0){
printf("men = %d, women = %d, child = %d\n",i,j,k);
cnt++;
}
}
}
if(cnt==0){
printf("None");
}
return 0;
}
二 输出完全数
输入整数A,B(6<=A<B<10000),输出[A,B]之间的所有完全数,两个数之间用一个空格分隔。如果没有,输出Not Found.。(完全数,又称为完美数或完备数,是一类特殊的自然数,其定义为,一个自然数如果等于除去其本身之外的所有因数(真因数)之和,则该数被称为完全数)
输入样例:
6 100
输出样例:
6 28
输入样例:
100 9000
输出样例:
496 8128
输入样例:
1000 2000
输出样例:
Not Found.
#include<stdio.h>
int main(){
int A=0;
int B=0;
scanf("%d %d",&A,&B);
int i=0;
int sum=0;
int count=0;
for(i=A;i<=B;i++){
int j=1;
for(j=1;j<i;j++){
if(i%j==0){
sum+=j;
}
}
if(sum==i){
printf("%d ",i);
count++;
}
}
if(count==0){
printf("Not Found.");
}
return 0;
}