PAT 1040 有幾個PAT 25 分

2021-09-26 22:59:22 字數 669 閱讀 3510

現給定字串,問一共可以形成多少個 pat?

輸入只有一行,包含乙個字串,長度不超過10​5,只包含 p、a、t 三種字母。

在一行中輸出給定字串中包含多少個 pat。由於結果可能比較大,只輸出對 1000000007 取餘數的結果。

一開始打算用三層for迴圈暴力解題,但是一看到字串長度,遂放棄了這個想法。參考別人的思想。

計算有幾個pat可以看a的左右,a的左邊p的個數乘a的右邊t的個數即是乙個a對應的所有pat的個數。比如ppppat則有4個,ppattt則有6個。

先遍歷一遍字串,計算t的個數。再遍歷一遍字串計算a的左邊p的個數,同時cnttt–【即減去了左邊出現的t的個數】,如果遇到a則計算一次pat的總數。

最後所有的加起來輸出總的pat的個數。

sum = (sum + (cntpp * cnttt) % 1000000007) % 1000000007;

參考柳神

#include 

using namespace std;

intmain()

for(

int i =

0; i < s.

length()

; i++)}

cout << sum;

return0;

}

PAT 1040 有幾個PAT 25分

現給定字串,問一共可以形成多少個 pat?輸入格式 輸入只有一行,包含乙個字串,長度不超過10 5 只包含 p a t 三種字母。輸出格式 在一行中輸出給定字串中包含多少個 pat。由於結果可能比較大,只輸出對 1000000007 取餘數的結果。輸入樣例 輸出樣例 2題目分析 一開始很容易想到反覆...

PAT乙級 1040 有幾個PAT(25)

題目 現給定字串,問一共可以形成多少個pat?輸入格式 輸入只有一行,包含乙個字串,長度不超過105,只包含p a t三種字母。輸出格式 在一行中輸出給定字串中包含多少個pat。由於結果可能比較大,只輸出對1000000007取餘數的結果。輸入樣例 輸出樣例 pat鏈結 sum of 每個 a 左邊...

PAT 乙級 1040 有幾個PAT(25)

現給定字串,問一共可以形成多少個pat?輸入格式 輸入只有一行,包含乙個字串,長度不超過105,只包含p a t三種字母。輸出格式 在一行中輸出給定字串中包含多少個pat。由於結果可能比較大,只輸出對1000000007取餘數的結果。輸入樣例 輸出樣例 2分析 這道題目的關鍵就在於怎麼算得快,列舉法...