C趣味编程百例(11)爱因斯坦的数学题
37.爱因斯坦的数学题
爱因斯坦算出了这样一个数学题:有一个很长的梯子。如果每一步跨过两步,就会剩下最后一步。如果每一步跨过三步,就剩下两步。如果每一步跨过五步,还剩下四步。如果每一步跨过六步,就剩五步了。每次只跨七步,最后只剩一步。这个梯子有几级?
*问题分析与算法设计
根据问题的含义,步数满足以下同余式:
x≡1(mod 2)
x≡2(mod 3)
x≡4(mod/* I为步数集合*/
while(!((I % 2 = = 1)& &(I % 3 = = 2)& &(I % 5 = = 4)&(I % 6 = = 5)&(I % 7 = = 0)))
++ I;/*满足一组同余的判别*/
printf(" staris _ number = % d \ n ",I);
}
*运行结果
Staris_number=119
*问题的进一步讨论
这个问题的算法还可以考虑求1、2、4、5的最小公倍数N,t=t+n判断t(t为N-1)8801。请自己写程序实现。
0条评论