PAT乙級 1040有幾個PAT python

2021-10-02 20:45:57 字數 1910 閱讀 9837

第一遍即興做題的**

s =

input()

aindex = s.index(

'a')

sdeal =

[i for i in s]

# 當成列表處理

countp =0;

countt =

0sum=0

flag1 =

1# 為1說明還有a,用來找pat

while flag1 ==1:

# 初始化

# print(sdeal,aindex)

countp =0;

countt =

0for i in

range(0

, aindex)

:if sdeal[i]

=='p'

: countp +=

1for i in

range

(aindex +1,

len(sdeal)):

if sdeal[i]

=='t'

: countt +=

1sum

+= countp * countt

try:del sdeal[aindex]

# 刪除用過的a

aindex = sdeal.index(

'a')

except

: flag1 =

0print

(sum

%1000000007

)

提交後優化的**

s =

input()

sdeal =

[i for i in s]

# 當成列表處理

別人的不超時**(真*直接遍歷就行,別想複雜)

#關鍵:按序遍歷,不重複使用

PAT乙級 1040 有幾個PAT

現給定字串,問一共可以形成多少個 pat?輸入格式 本來是說從pat甲級再開始記錄做題記錄的,但是難度明顯高於我自己的想象,所以現在在乙級題中,覺得特別有價值的需要來記錄一下。自己的 如下 include define m 1000000007 include using namespace std...

PAT 乙級 1040 有幾個PAT

題目 題目鏈結 思路 這道題的思路是從網上搜的,要想知道構成多少個pat,那麼遍歷字串後對於每一a,它前面的p的個數和它後面的t的個數的乘積就是能構成的pat的個數。然後把對於每乙個a的結果相加即可。辣麼就簡單啦,只需要先遍歷字串數一數有多少個t,然後每遇到乙個t呢cntt 每遇到乙個p呢,cntp...

PAT乙級 1040 有幾個PAT

題目 1040 有幾個pat 原先思路自己也知道肯定會超時,還是寫了,畢竟時間複雜度o n3 比較直觀找到每個pa,檢視後續有多少個t,求和。正確思路 看了下大佬的思路,是看每個a前的p和後的t的積,豁然開朗,修改了自己的 全部通過。include using namespace std intma...