这是我第一篇文章,大家多多关照!
这里先说一下,我喜欢用格式化输入输出,想用cout和cin的改过来就可以了。
今天给大家讲一下一题“坑死我”的题。
开始一看就想用循环,于是写出:
#include<cstdio>
int main(){
int n,max=-1000,min=1000,t,flag=0;
scanf("%d",
for(int i=0;i<n;i++){//i是兔子,j是鸡
for(int j=n;j>=0;j--){
if(i*4+j*2==n){
if(min>i+j){
flag=1;
min=i+j;
}
if(max<i+j){
flag=1;
max=i+j;
}
}
}
}
if(flag==0)
printf("0 0");
else
printf("%d %d",min,max);
return 0;
}
然后就……
我也不知道为啥,测试点就是不对。
最后终于找到了正确代码,自己写了下注释,希望大家能理解。
AC代码:
#include<cstdio>
int main(){
int n;
scanf("%d", //要想总数最少,兔子要最多;要想总数最多,鸡要最多。
if(n%2!=0)
printf("0 0");//鸡和兔子的腿数都是双数,和不可能是奇数。确保n肯定能被2整除,以执行下一步。
else if(n%4!=0)
printf("%d %d\n",n/4+1,n/2); /*兔子最多,就用它除以四,达到最多数量,此时绝对还剩2条腿,
因为n不是奇数,又不能被四整除;此时n已经是2的倍数,因此取鸡的最多数就是把总数除以二。*/
else
printf("%d %d\n",n/4,n/2);//n如果是四的倍数,直接除以四;与上面同理。
return 0;
}
我是不是讲得有点太复杂了?那我再用自己的样例解释一下吧。
大家懂了吗?记得点赞哦!