爱因斯坦阶梯

2011年11月15日 发表评论 阅读评论

 问题:在你面前有一条长长的阶梯。如果你每步跨2阶,那么最后剩下1阶;如果你每步跨3阶,那么最后剩2阶;如果你每步跨5阶,那么最后剩4阶;如果你每步跨6阶,那么最后剩5阶;只有当你每步跨7 阶时,最后才正好走完,一阶也不剩。请问这条阶梯至少有多少阶?
 分析:所求的阶梯数应比 2、3、5、6 的公倍数(即 30 的倍数)小 1,并且是 7 的倍数。因此只需从 29、59、89、119、……中找7 的倍数就可以了。可以得到答案为 119 阶

c代码实现如下:

#include<stdio.h>
main()
{
int num=7;
while(1)
{
   if(num%2==1&&num%3==2&&num%5==4&&num%6==5&&num%7==0)break;
   else ++num;
}
printf("爱因斯坦的阶梯数为:%dn",num);
}

注:上面的&&不能理解为||实现,&&是和的意思,||为或的意思。||时即其中有一个条件成立,表达式就成立,运行的结果为7。

也可将上面的代码改为如下代码实现:

#include<stdio.h>
main()
{
int num=7;
while((num%2==1&&num%3==2&&num%5==4&&num%6==5&&num%7==0))
{
 num+=7;
}
printf("爱因斯坦的阶梯数为:%dn",num);
}

这样代码更精炼。直接将条件放到while循环条件语句里。




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

分类: C/C++/Java/Delphi 标签:
  1. 2011年12月3日13:25 | #1

    I could read a book about this without finding such real-world approcaehs!