问题标题:
求爱因斯坦数学题.有一条长阶,若每步跨2阶,则最后剩1阶;若每步跨阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨7阶,则最后正好一阶不剩.答;#includeintmain(void){intsteps=29,i=1;while(steps
问题描述:
求爱因斯坦数学题.有一条长阶,若每步跨2阶,则最后剩1阶;若每步跨阶,
则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨7阶,则最后正好一阶不剩.
答;
#include
intmain(void)
{
intsteps=29,i=1;
while(steps%7)
{
steps=(30*++i)-1;
}
printf("Totalsteps:%dn",steps);
return0;
}
这是书上的答案,我看不懂它的算法,
党红梅回答:
其实是个数学问题,知道了如何列式算这个题,也就知道算法.
若每步跨2阶,则最后剩1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶,也就是说,每步跨2,3,5阶都是少1阶(即余数为-1).取最小公倍数得总阶数=30*n-1,n为正整数.
于是就有了程序,不断增大n,一直到30*n-1是7的倍数即可,也就满足了所有条件.
查看更多