描述
一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。
输入描述:
每组测试数据占1行,每行一个正整数a (a < 32768)
输出描述:
输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开 如果没有满足要求的答案,则输出两个0。
直接做
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a;
while(cin>>a){
int flag=0;
int minn=1e9,maxx=0;
for(int i=0;i<=a/2;i++){
for(int j=0;j<=a/4;j++){
if(2*i+4*j==a){
flag=1;
minn=min(minn,i+j);
maxx=max(maxx,i+j);
}
}
}
if(flag==0)cout<<0<<" "<<0<<endl;
else cout<<minn<<" "<<maxx<<endl;
}
return 0;
}
贪心做法
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a;
while(cin>>a){
int minn=0,maxx=0;
if(a%2==0){
minn=a/4+(a%4)/2;
maxx=a/2;
}
cout<<minn<<" "<<maxx<<endl;
}
return 0;
}