PAT乙級練習題B1040 有幾個PAT

2021-07-14 17:26:10 字數 1087 閱讀 9016

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

輸入格式:

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

輸出格式:

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

這個題搞了挺久,原來的演算法時間複雜度太高有三個迴圈巢狀,o(n^3),執行超時。然後想出乙個新的演算法,先想只需要兩個字元匹配的情況,然後拓展到三個,這個演算法應該可以拓展的無窮個,只有乙個迴圈,時間複雜度只有o(n)。

#include

#include

using

namespace

std;

int main()

else

else

else}}

}}

} sum %= 1000000007;

cout

<< sum << endl;

system("pause");

return

0;}

#include

#include

using

namespace

std;

int main()

else

if (list[j] == 't')}}

} sum %= 1000000007;

cout

<< sum << endl;

system("pause");

return

0;}

#include

#include

using

namespace

std;

int main()

if (list[i] == 'a')

if (list[i] == 't')

}sum %= 1000000007;

cout

<< sum << endl;

system("pause");

return

0;}

B1040 有幾個PAT 25 分

現給定字串,問一共可以形成多少個pat?輸入只有一行,包含乙個字串,長度不超過10 5 只包含p a t三種字母。在一行中輸出給定字串中包含多少個pat。由於結果可能比較大,只輸出對 1000000007 取餘數的結果。2分析 輸入字串,統計出每乙個位置前面p出現的個數和t出現的個數,然後遍歷字串,...

PAT 乙級練習 1040 有幾個PAT

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

PAT 乙級練習題 1005

當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對n 3進行驗證的時候,我們需要計算3 5 8 4 2 1,則當我們對n 5 8 4 2進行驗證的時候,就可以直接判定卡拉茲猜想的真偽,而不需要重複計算,因為這4個數已經在驗證3的時候遇到過了,我們稱5 8 4 2...