用Python解中考數學規律題


以下為2018成都市的中考數學真題B卷第23題:

分析:

一、這是一道常規的找規律考題,一般每年的中考數學都會涉及,根據題的難易程度,位置一般會出現在B卷的第二題,以填空的方式出現。

二、這一道題在一般的規律題的基礎上加入了兩個點,

①牽涉到簡單的整式運算。

②用S1,S2,S3,S4,S5......分別來表示每一項,有誤導考生將其與等差等比數列的前n項和中的“Sn”混淆的動機,以增大考題難度。

③單項表達式需要依賴上一項的結果,加大考題難度

三、常規解題思路:

第一步:根據第一項表達式,分別計算出后面每一項的表達式,直到發現規律

第二步:分析規律,總結規律,根據規律求出目標項

具體操作:

①分別求出前面的每一項

S1 = 1/a

S2 = -s1-1 = -(1/a)-1 = -(a+1)/a

S3 = 1/s2 = -a/(a+1)

S4 = -s3-1 = a/(a+1) -1 = -1/(a+1)                  初見端倪

S5 = 1/s4 = -(a+1) = -a-1                         有點意思
S6 = -s5-1 = -(-a-1)-1 = a                          若隱若現

S7 = 1/s6 = 1/a                                  恍然大悟

S8 = ....

 

②分析規律

  • 很明顯,第8項為: -(a+1)/a,第9項為: -a/(a+1),第10項為:-1/(a+1),第11項......即后面項的表達式均為前6項的循環。
  • 以此類推,要求出2018項,只需要確定出2018項在循環的過程中處於前六項的哪一項即可。
  • 方法:2018除6再取余,余數為2,則說明循環完若干輪后還落單了兩次,對照前六次中,第二項為-(a+1)/a,故答案即為-(a+1)/a

 

接下來我們用程序來實現:

方法一:

為了模擬運算2018次,故我們最外層用while實現不停地去循環,while里面則用for遍歷這重復的六個結果。

代碼如下:

 1 # 規律題
 2 # 第一步:將前六項依次存入my_list列表
 3 my_list = ['1/a', '-(a+1)/a', '-a/(a+1)', '-1/(a+1)', '-a-1', 'a']
 4 # 根據目標項數定位到my_list中的對應項
 5 cnt = 0
 6 flag = 0
 7 while True:
 8     for k in my_list:
 9         cnt += 1
10         if cnt == 2018:
11             flag = 1
12             print(k)
13             print('遍歷了{}次'.format(cnt))
14             break
15     if flag == 1:
16         break

效果:

這種方法雖是真實的模擬了2018次循環遍歷,但着實麻煩,接下來我們用取模(即取余數)的方式來實現以上功能。

方法二:

代碼:

 1 # 規律題
 2 # 第一步:將前六項依次存入my_list列表
 3 my_list = ['1/a', '-(a+1)/a', '-a/(a+1)', '-1/(a+1)', '-a-1', 'a']
 4 # 根據目標項數定位到my_list中的對應項
 5 cnt = 0
 6 for i, v in enumerate(my_list):
 7     cnt += 1
 8     if i == 2018 % 6 - 1:
 9         print(v)
10         print('遍歷了{}次'.format(cnt))
11         break

效果:

怎么樣,瞬間省去了2016次運算,而且代碼也精簡了,是不是很酷。
但我們的計算機可是最不怕辛苦了,而且最擅長的就是重復的去做運算,所以,遇到類似的數學題,我們還可以丟給計算機。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM