PAT 1040 有幾個PAT 25分

2021-10-05 10:43:30 字數 1029 閱讀 2084

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

輸入格式:

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

輸出格式:

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

輸入樣例:

輸出樣例:

2
題目分析:一開始很容易想到反覆遍歷3遍字串,第一遍找到p,第二遍找到a,第三遍找到t。相當於用窮舉法計算pat總共出現的數目。但是會出現執行超時

//測試點2,3,4執行超時

#include

#include

using

namespace std;

intmain()

}}cout<1000000007

;return0;

}

超時原因分析:核心演算法for迴圈巢狀3次,時間複雜度=o(n3),遇到大數的輸入容易出現超時的情況。應該在演算法上優化,降低時間複雜度。

#include

#define mod 1000000007

using

namespace std;

intmain()

cout

}

思路:基本上套的是柳婼的思路。每當遇到一次a,先計算(a前p的總和)(a後t總和)的積,將這些積累加之後再對1e9+7取餘。

改良後的演算法只有2次並列的for迴圈,時間複雜度為o(n)遠小於之前的o(n3),避免了執行超時。

pat乙級題解大全 c++

PAT 1040 有幾個PAT 25 分

現給定字串,問一共可以形成多少個 pat?輸入只有一行,包含乙個字串,長度不超過10 5,只包含 p a t 三種字母。在一行中輸出給定字串中包含多少個 pat。由於結果可能比較大,只輸出對 1000000007 取餘數的結果。一開始打算用三層for迴圈暴力解題,但是一看到字串長度,遂放棄了這個想法...

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分析 這道題目的關鍵就在於怎麼算得快,列舉法...