1. 程式人生 > >用Python解中考數學規律題

用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次運算,而且程式碼也精簡了,是不是很酷。
但我們的計算機可是最不怕辛苦了,而且最擅長的就是重複的去做運算,所以,遇到類似的數學題,我們還可以丟給計算機。