日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

蓝桥杯真题 杨辉三角形 python

發布時間:2023/12/31 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯真题 杨辉三角形 python 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 專欄
  • 《藍橋杯題目》

目錄

????????【問題描述】

????????【輸入格式】

????????【輸出格式】

????????【樣例輸入】

????????【樣例輸出】

????????【評測用例規模與約定】

??????????省流版本:

??????????題目解析:

??????????綜上所述,寫成代碼如下所示:


【問題描述】

下面的圖形是著名的楊輝三角形:

如果我們按從上到下、從左到右的順序把所有數排成一列,可以得到如下數列:

1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, …

給定一個正整數 N,請你輸出數列中第一次出現 N 是在第幾個數?

【輸入格式】

輸入一個整數 N。

【輸出格式】

輸出一個整數代表答案。

【樣例輸入】

6

【樣例輸出】

13

【評測用例規模與約定】

對于 20% 的評測用例,1 ≤ N ≤ 10;

對于所有評測用例,1 ≤ N ≤ 1000000000。

省流版本:

如果直接用暴力枚舉的話,需要求出每一行的全部數字,然后判斷每一行中是否存在該整數,思路可以,但是時間復雜度太大,只能拿30%。如果根據二項式定理,找出從哪一行開始只需要遍歷前三個數,然后利用求和公式直接計算答案,就可以大大減少時間復雜度。

題目解析:

首先介紹一下楊輝三角的性質:

1、每個數等于它上方兩個數的和。

2、左右對稱(說明最先出現的數一定在左邊)

3、第n行有n個數,前n行就有(n+1)*n/2個數

4、n+1行的數是(a+b)^n展開后各項的系數

所以,由性質4可得,第n行的m個元素為C(n-1,m-1),由于1 ≤ N ≤ 1000000000,每一行第四個數為N*(N-1)*(N-2)/6,粗略計算,當N>1900時,第四項就大于1000000000了,所以說,從第1901行開始,N若是第一次出現,只可能出現在第二第三項。

因此,在前1900層時,可以直接使用暴力枚舉,在判斷是否在該層,若不在前面1900層,先粗略估計N所在的層數(先計算在第三項時,因為若存在,就會先出現)int((N*2)**0.5),這時,就只需要判斷三種情況:①N在該層;②N在下一層;③N在N+1層。

最后計算在第幾個數上,分為三種情況:

1、在前1900層時,(c*c+c)//2+j+1 ,在c+1層的第j+1個數時(j是在列表中的下表,因此要加1)

2、在1900層之后且是第三項時,(k*(k+1))//2+3,第k+1行

3、在1900層之后且是第二項時,(N*(N+1)//2)+2,第N+1行時

綜上所述,寫成代碼如下所示:

N=int(input()) n=[1] #第一層 c=1 #層數 if N==1:print(1) else:#由于第1900層開始,N只會出現在第二個或第三數字上,所以1900開始,不需要求全部while c<1900:n = [1]+[n[j]+n[j+1] for j in range(len(n)-1)]+[1] #楊輝三角遞推公式if N not in n[1:len(n)-1]: #判斷N是否在c層上c=c+1else:break if c==1900:k=int((N*2)**0.5) #粗略計算出現的層數 #N出現在第三個數上while (k*(k-1))//2<N:k=k+1if (k*(k-1))//2==N:print((k*(k+1))//2+3)#N出現在第二個數上else:print((N*(N+1)//2)+2) # N會出現在第N+1層 #N在前1900層上時 for j in range(len(n)):if n[j]==N:print(((c*c+c)//2)+j+1) break

最后運行一下結果。。。。。

總結

以上是生活随笔為你收集整理的蓝桥杯真题 杨辉三角形 python的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。