爱因斯坦阶梯
问题:在你面前有一条长长的阶梯。如果你每步跨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%21&&num%32&&num%54&&num%65&&num%70)break;
else ++num;
}
printf(“爱因斯坦的阶梯数为:%dn”,num);
}
注:上面的&&不能理解为||实现,&&是和的意思,||为或的意思。||时即其中有一个条件成立,表达式就成立,运行的结果为7。
也可将上面的代码改为如下代码实现:
#include<stdio.h>
main()
{
int num=7;
while((num%21&&num%32&&num%54&&num%65&&num%70))
{
num+=7;
}
printf(“爱因斯坦的阶梯数为:%dn”,num);
}
这样代码更精炼。直接将条件放到while循环条件语句里。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/einstein/472.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.