韩信带领1500名士兵去打仗。战后,死伤一二百人。剩下的士兵中,他命令士兵3人一排,结果多出1人;接着命令士兵5人一排,结果多出4人;又命令士兵7人一排,结果多出3 人。问:剩下的士兵一共多少人? 可以用哪些算法解决该问题?
枚举法
筛选法
同余法
递归法
这是用枚举法解决韩信点兵问题的流程图,请选出流程图中ABCD四个框对应的代码。
A
ren=1300
B
while ren<1501 :
C
if ren%3==1 and ren%5==4 and ren%7==3 :
D
ren=ren+1
用筛选法解决“韩信点兵”问题的算法如下:(1)用数组a存储1300~1500范围内的数;(2)在a中存储满足“x除以3余数为1”条件的数;(3)在a中存储满足“x除以5余数为4”条件的数;(4)在a中存储满足“x除以7余数为3”条件的数;(5)输出数组a中剩下的数。 如果交换步骤2和步骤4的顺序,该算法的执行效率会变吗?
执行效率会变低
执行效率会变高
执行效率不会变
执行效率有可能变高也有可能变低
韩信带领1500名士兵去打仗。战后,死伤一二百人。剩下的士兵中,他命令士兵3人一排,结果多出1人;接着命令士兵5人一排,结果多出4人;又命令士兵7人一排,结果多出3 人。根据同余法的要求,找到了一个在范围外符合要求的数94,要继续找范围内符合的数,下一步要怎么做?
用94加上3和7的最小公倍数
用94加上3和5的最小公倍数
用94加上5和7的最小公倍数
用94加上3和5和7的最小公倍数
对于“韩信点兵”这个具体的问题来说,一般情况下:同余法的执行效率>筛选法的执行效率>枚举法的执行效率。