POJ3237 鸡兔同笼

题目描述:

POJ3237 鸡兔同笼_第1张图片

这个题目非常简单啊,相信具有小学水平和加上会一门编程语言都可以accepted。下面给参考代码吧,其实不用参考了

下面给一下结题思路:

    鸡有两只脚,兔子有四条腿。同样数目的鸡,脚的总数肯定比相同数目的兔子少。因此,在计算笼子里至多有多少只动物时,应该尽量把脚都看成鸡的脚,在计算笼子里至少有多少只动物时,应该尽量把脚看成兔子的脚。因此,沿此思路展开讨论,只需找到可能的组合,使得笼子里的鸡或者兔子尽量即可。

    求解时需要想清楚脚数为奇数或偶数、是否能被4整数等情况。用N表示脚 的数量。

(1)如果N是奇数,则说明没有满足要求的答案,输出0 0.

(2)如果N是偶数且能被4整除,则最少有N/4只兔子,最多有N/2只鸡。

(3)如果N是偶数且不能被4整除,则最少有(N-2)/4只兔子和1只鸡,最多有N/2。

下面是我编写通过的代码:

#include
int a[1001];
int main()
{
	int n;		//n<=1000
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	for(int j=1;j<=n;j++)
	{
		if(a[j]%2!=0) 
			printf("%d %d\n",0,0);
		else if(a[j]%4==0)
			printf("%d %d\n",a[j]/4,a[j]/2);
		else
			printf("%d %d\n",a[j]/4+1,a[j]/2);	
	}
	return 0;
}

官方给的代码:

#include
int main()
{
	int nCases,nFeets;
	while(scanf("%d",&nCases)!=EOF)
	{
		for(int i = 0;i < nCases;i++)
		{
			scanf("%d",&nFeets);
			if(nFeets%4 == 0)
				printf("%d %d\n",nFeets/4,nFeets/2);
			else if(nFeets%2 == 0)
				printf("%d %d\n",nFeets/4+1,nFeets/2);
			else
				printf("0 0\n");
		}
	}
	return 0;
}

上面两个代码提交结果(第一个参考代码,第二个自己写的):


发现都差不多啊,内存什么的都一样。

想说明一点的是第二个还是值得学的,因为没有定义一个数组,减少的内存的分配。

对比这两个代码有两个不同点,头文件不同。其他大同小异。

POJ3237 鸡兔同笼_第2张图片

cstdio是标准C++头文件,也就是包括STL类库的定义,在一些算法竞赛中这个STL是唯一可以使用类库。像蓝桥杯就是这样的。

你可能感兴趣的:(简单计算与模拟)