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