《孙子算经》记载:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”
函数原型
int ChickenRabbit(int *chicken, int *rabbit, int head, int foot);
说明:head 和 foot 为头和脚的数量,chicken 和 rabbit 为指示鸡和兔数量的指针。若问题有解,则将鸡和兔的数量保存到 chicken 和 rabbit 所指示的变量中,函数值为 1(真);否则不改变 chicken 和 rabbit 所指示的变量,函数值为 0(假)。
裁判程序
#include
int ChickenRabbit(int *chicken, int *rabbit, int head, int foot);
int main()
{
int h, f, c, r;
scanf("%d%d", &h, &f);
if (ChickenRabbit(&c, &r, h, f))
{
printf("%d %d\n", c, r);
}
else
{
puts("None");
}
return 0;
}
/* 你的提交代码将被嵌在这里 */
输入样例1
35 94
输出样例1
23 12
输入样例2
30 71
输出样例2
None
我写的
int ChickenRabbit(int *chicken, int *rabbit, int head, int foot){
int i,j,t=0;
for(i=0;ifor(j=0;jif(i+j==head&&2*i+4*j==foot){
*chicken=&i;
*rabbit=&j;
t=1;
}else t=0;
}
}
if(t==1) return (*chicken,*rabbit);
}
修改如下,供参考:
#include <stdio.h>
int ChickenRabbit(int *chicken, int *rabbit, int head, int foot);
int main()
{
int h, f, c, r;
scanf("%d%d", &h, &f);
if (ChickenRabbit(&c, &r, h, f))
{
printf("%d %d\n", c, r);
}
else
{
puts("None");
}
return 0;
}
/* 你的提交代码将被嵌在这里 */
int ChickenRabbit(int *chicken, int *rabbit, int head, int foot)
{
int chick, rab;
chick = (4 * head - foot) / 2;
rab = head - chick;
if (foot % 2 == 1 || chick < 0 || rab < 0)
return 0;
else{
*chicken = chick;
*rabbit = rab;
return 1;
}
}