1.题目
著名的爱因斯坦阶梯问题:有一条长长的阶梯。
如果你每步跨2阶,那么最后剩1阶;
如果你每步跨3阶,那么最后剩2阶;
如果你每步跨5阶,那么最后剩4阶;
如果你每步跨6阶,那么最后剩5阶;
只有当你每步跨7阶时,最后才正好走完,一阶也不剩。
请问该阶梯至少有多少阶?(求所有三位阶梯数)
2.代码
#include<stdio.h>
int main(void)
{
for (int i = 100; i <= 1000; i++)//限定范围为100到1000
{
if (i % 2 == 1 && i % 3 == 2 && i % 5 == 4 && i % 6 == 5 && i % 7 == 0)//添加判定条件
{
printf("该阶梯有%d阶\n", i);
}
}
puts("运算结束!");
return 0;
}
3.个人见解
由题可得,该阶梯总数为100到1000之间。
且
如果你每步跨2阶,那么最后剩1阶;
如果你每步跨3阶,那么最后剩2阶;
如果你每步跨5阶,那么最后剩4阶;
如果你每步跨6阶,那么最后剩5阶;
只有当你每步跨7阶时,最后才正好走完,一阶也不剩。
所以得:i % 2 == 1 && i % 3 == 2 && i % 5 == 4 && i % 6 == 5 && i % 7 == 0
使用if语句判断该语句是否成立,成立则打印出来。