(
课件网) 六年级上册 信息科技 “韩信点兵”枚举法的实现 第10课 你将学习 1.枚举法解决问题的一般过程。 2.枚举法的程序实现。 讨论 你知道“韩信点兵”的故事吗? 他是怎么快速算出士兵的总人数的? 建构 假如由你来“点兵”,你将采用何种算法? 共1500人, 战后,死伤四五百人, 估计还有1000~1100人, 3人一排,多出2人, 5人一排,多出3人, 7人一排,多出2人。 韩信马上算出还有1073人。 抽象与建模 剩余士兵总人数 用变量x表示 抽象与建模 枚举x在1000~1100范围内的每一个值, 且同时满足: x除以3余数为2, x除以5余数为3, x除以7余数为2, 满足条件的x,就是所求的解。 当x=1000时,条件“x除以3余数为2,x除以5余数为3,x除以7余数为2”是否同时满足? 当x=1001时,条件“x除以3余数为2,x除以5余数为3,x除以7余数为2”是否同时满足? …… 算法设计 x依次取1000~1100范围内的值, 采用循环结构; 判断条件是否满足, 采用分支结构 算法的程序实现 求余运算符: % x=1000 while x<1101: if x%3==2 and x%5==3 and x%7==2: print("剩余的士兵数为:",x) x=x+1 如:5%2,结果是1;17%3,结果是2。 x除以3余数是2 x%3==2 x除以3余数是2,x除以5余数是3,x除以7余数是2 判断多个条件是否同时满足,用逻辑运算符and来连接。 x%3==2 and x%5==3 and x%7==2 练习 假如“韩信点兵”的问题描述修改为:有一次,韩信带领1500名士兵打仗。战后,死伤一二百人。剩下的士兵中,他命令士兵3人一排,结果多出1名;接着命令士兵5人一排,结果多出4名;又命令士兵7人一排,结果多出3名。请问剩下的士兵有多少人? 请用枚举法设计算法解决上述问题。用Python语言编写。