小颗粒编程兔子(育碧编程兔子)

2023-11-19 03:30:38 数码极客 bianji01

 

C语言编程 兔子鸽子问题

判断error的情况有问题。其实这题列出公式就可以解答了:

设x只鸽子,已知兔子,则:

x+y=n;

2x+4y=m;

解得:x=2n-m/2,y=m/2-n。

因为x,y都是非负整数,所以m/2必须是一个整数,也就是m必须是偶数。同时:

x=2n-m/2>=0,解得4n>=m;

y=m/2-n>=0,解得m>=2n;

因此2n<=m<=4n,且m是偶数。这就是判断是否“Error”的条件。

#include

intmain(intargc,char*argv[])

unsignedintn,m;

while(scanf("%d%d",&n,&m)&&!(m==0&&n==0))

if(m%2!=0||m<2*n||m>4*n)

printf("Error\n");

printf("%d%d\n",(2*n-m/2),(m/2-n));

return0;

我把浮点数强制转换成整数,然后判断是否相等,(x1==x&&y2==y)不相等的话,就说明错误了,这个对吗?我测试了很多数据,都能验证的呢!那我是错在哪里呢?

你的编程好简洁哈,要像你学习哇!!

if((x>0&&y>0)&&(x1==x&&y2==y))这个判断有问题,x和y不需要大于0的,可以等于0。

比如有0只鸽子,3只兔子,也就是n=3,m=12,是有有解的一个输入。正确的输出结果是:03,但是你的程序会输出“Error”的。

if((x>=0&&y>=0)&&(x1==x&&y2==y))

试试。平时不建议浮点数直接用等于(==)判等,不过你这题应该没问题的。

本回答由提问者推荐

>>">C#...算兔子的算法。。要完整代码,高手>>>

嗯,这个题目蛮好玩,做做看。纯粹为了练手,不是为给你做作业

程序:兔子问题

声明:易趣百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系315127732@qq.com
广告位招租
横幅广告