码丁实验室,一站式儿童编程学习产品,寻地方代理合作共赢,微信联系:leon121393608。
秦末,楚汉相争,刘邦启用年轻的韩信为大将军。据说,韩信点兵并不要求士兵报数,只要士兵列队。一次,队伍排成5列纵队末行1人,如果排成6列纵队末行5人,如果排成7列纵队末行4人,如果排成11列纵队末行10人。根据这些数字,加上韩信知道士兵人数大概有四、五千人,他就能够直接说出具体有多少士兵了。是不是很神奇?
这就是有名的“韩信点兵“问题。明朝数学家程大位系统地研究了这个问题,并给出了详细的解答。程大位把它称之为“物不知其数”问题,因此后人又把这类问题称之为“物不知其数”问题。因为我们中国人很早就知道这类问题的解法,世界各国把它称之为中国剩余定理或者孙子定理。
现在一般利用数论中的同余性质来求解。在小学奥数里通常采用列举法来求解,只要掌握了这种方法就可以把它应用到这一类问题的求解。
首先,列举出除以11余10的数:
10、21、32、43、…
接下来,在上述数中找除以7余4的数:
32、32+11×7×n
然后,在上述数中找除以6余5的数:
263、263+11×7×6×n
最后,在上述数中找除以5余1的数:
2111、2111+11×7×6×5×n
士兵人数大约在四、五千,因此确切的人数为
2111+2310×1 = 4421(人)
上述列举法过程虽然有些繁琐,但算法不难理解。对于我们人工计算来说稍微麻烦一点儿,但对于计算机来说就真的是小菜一碟了。所以计算机更加简单粗暴,从4000开始直到5000每一个数逐一进行条件判断,直至找到那个数为止。算法流程图如下。
有了程序流程图,编写程序就简单了。因为根据流程图,按部就班就可以了!流程图就是编程的施工图。画流程图是学习编程的基本功。要养成不画流程图不编写代码的好习惯。
真的好简单,简单的简直不像奥数题!计算机好强大呀!但前提是你要会编程呀!别担心,编程也不难!只要你愿意学。
这里,为了程序可读性更强,多创建了几个变量,否则程序更短。
Scratch虽然是专门为少儿设计的编程语言,但其实其功能还是很强大的,可以创建很多动画、游戏和故事书等等。而且,学过Scratch后,将来再学其他高级程序设计语言,理解起来会更加顺畅,更加容易!