优快云论坛上网友的问题:有一群鸡和一群兔,两种动物只数相同。两种动物的脚的总数都是三位数,且这两个三位数的六个数字分别是0,1,2,3,4,5。编程求鸡和兔的只数是多少?它们的脚数各是多少?
C语言,穷举法解决方案如下:
#include <stdio.h>
int main(void)
{
int num, result, foot1, foot2;
for(num = 50; num < 250; num++)
{
foot1 = 2*num;
foot2 = 4*num;
result = 0;
result |= (1 << (foot1 % 10));
result |= (1 << (foot1 % 100 / 10));
result |= (1 << (foot1 / 100));
result |= (1 << (foot2 % 10));
result |= (1 << (foot2 % 100 / 10));
result |= (1 << (foot2 / 100));
if(result == 63)
{
printf("鸡数:%d\t脚数:%d\n", num, 2*num);
printf("兔数:%d\t脚数:%d\n", num, 4*num);
}
}
return 0;
}
运行结果:
E:\Workspace>tcc -run demo.c
鸡数:76 脚数:152
兔数:76 脚数:304