爱因斯坦数学题

一条长长的楼梯,如果每一步跨2个台阶,最后余1个台阶;每次跨3个台阶,最后余2个台阶;每次跨4个台阶,最后余3个台阶;每次跨5个台阶,最后余4个台阶;每次跨6个台阶,最后余5个台阶;每次跨7个台阶,最后刚好跨完,一个也不剩。问这个楼梯最少有多少个台阶?
(要有计算方法)

因为每次跨5个台阶,最后余4个台阶,所以个位数为4或9,因为每一步跨2个台阶,最后余1个台阶,所以个位数只能为9,因为每次跨7个台阶,最后刚好跨完,一个也不剩,所以总台阶数能被7整除。
个位数为9,又能被7整除的正整数有49,119…………
经检验,119满足所有题中条件,所以这个楼梯最少有119个台阶
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-08
按我的思维推断:看第一句“若每步跨2阶,则最后剩余1阶”,即该长阶数一定是奇数! 再看第三句“ 若每步跨5阶,则最后剩余4阶”,即该长阶数末尾一定是9!为什么?因为该长阶数减4后能被5整除,能被5整除的只有0或5,那0或5加4后等于4或9,再看回第一条,该数既然是奇数,那肯定是末尾9啦! 突然,我想到另外一个特征,这道题的每一条,长阶数减去剩余的阶数,再除于每步跨的阶数,余数一定是0,main() { int a=1;/* 定义长阶数是变量a,初始值为1 */ while((a-1)%2!=0 || (a-2)%3!=0 || (a-4)%5!=0 || (a-5)%6!=0 || a%7!=0) { a++; /* 把题目每个特征写下来,不断循环测试,只要不符合任何一个特征,都要继续循环 */ } printf("%d",a); /* 最后输出长阶数 */ } 又想了一下,长阶数是7的倍数,那么能不能将步长值修改一下,减少运行次数呢? 把变量a初始值改为7,步长值改为7,即: main() { int a=7;/* 变量a初始值为7*/ while((a-1)%2!=0 || (a-2)%3!=0 || (a-4)%5!=0 || (a-5)%6!=0 || a%7!=0) { a=a+7; /* 步长值改为7 */ } printf("%d",a); } 最后得出结果:119
第2个回答  2013-11-08
用同余
已知:
a≡1(mod 2)
a≡2(mod 3)
a≡3(mod 4)
a≡4(mod 5)
a≡5(mod 6)
a≡0(mod 7)
(2、3、4、5、6)最小公倍数为 60
30a≡30(mod 60)
20a≡40(mod 60)
15a≡45(mod 60)
12a≡48(mod 60)
10a≡50(mod 60)

因为 12+12+12-15+20-10-30=1
所以 a≡59(mod 60)
又因为 a≡0(mod 7)
a=7k=59+60m
因为m要最小 所以 m=1时 为7的倍数
a=119本回答被网友采纳
第3个回答  2013-11-08
只要+1个台阶,就都不会剩台阶了,
所以最少的总台阶是7×6×5×4×3×2×1-1=5039
相似回答