打开网易新闻 查看精彩图片

考点:数学中的奇数规律观察题【Python习题13】

题目:求0—7所能组成的奇数个数。

解题分析:

这题目的第一个想法,我们可能直接会考虑计算机的思维直接强行遍历,最终遍历到一个最大的8位数,并且数值中不能包含8和9的所有数的个数,这样的想法虽然可以解题,但是比较粗暴,效率低。此题,我们可以结合数学观察思维,可以使得我们的代码运行效率更高!

我们可以按照数据的位数来划分:

1位位数的奇数分别是1,3,5,7 共4个。

2位位数的奇数应该在1位位数的基础上增加,可以组成为:

11,13,15,17

21,23,25,27

31,33,35,37

71,73,75,77

共4*7个

3位位数的奇数应该在2位的基础上增加,可以组成为:

101,103,105,107

201,203,205,207

301,303,305,307

701,703,705,707

111,113,115,117

211,213,215,217

311,313,315,317

711,713,715,717

171,173,175,177

271,273,275,277

371,373,375,377

771,773,775,777

以上有8组,共4*7*8个

接下去的规律是:

4位位数的奇数的个数:4*7*8*8

8位位数的奇数个数:4*7*8*8*...8

观察结果是从3位位数开始,每增加1位位数,奇数个数就在原来基础上乘以8.

根据以上过程,我们得出如下程序代码:

我们用curnum=4表示1位数时候的奇数个数,这个变量记录每次位数时候的奇数个数。

我们用total=4表示记录总共的奇数个数,把每一种位数得到的奇数个数都加到里面,最终合计的结果,就是本题的答案。

程序源代码:

# -*- coding: utf-8 -*-"""@File文件 : ljytest86@Time创建时间 : 2021/12/21@Author作者 : 刘金玉@Contact联系方式 : selidev@qq.com 编程创造城市 http://bcczcs.com注:作者信息请保留!否则必究法律责任!刘金玉编程,编程创造城市!作者微信号:selidev作者抖音号:selidev作者B站:刘金玉编程微信公众号:编程创造城市题目:求0—7所能组成的奇数个数。
程序分析:组成1位数是4个。组成2位数是7*4个。组成3位数是7*8*4个。组成4位数是7*8*8*4个。"""
total=4curnum=4print("{}位数奇数个数".format(1),curnum)for i in range(2,9): #最大可能的组成位数是8位if i<=2:curnum*=7else:curnum*=8print("{}位数奇数个数".format(i),curnum) #输出每一种情况total+=curnumprint("总共个数:",total)


总结:

我们程序员往往很多时候思考会比较简单,就是利用计算机的遍历功能会把所有可能列举出来然后进行筛选,但是这样其实有些时候消耗了一些不该消耗的时间和软件性能。如果程序员在平时写代码之前思考同时结合数学思维的方法,将进一步可能进阶到大咖行列。加油!

如有问题提问,欢迎留言交流!

更多Python基础操作知识,大家可以到B站/优酷/爱奇艺/好看视频/腾讯视频搜索“刘金玉”,可以找到《零基础Python教程》和《Python高级进阶教程》视频合集哦!全部免费亲情奉献!

联系作者:刘金玉

长按关注公众号

编程创造城市官网:https://bcczcs.com/