現給定字串,問一共可以形成多少個 pat?
輸入只有一行,包含乙個字串,長度不超過105,只包含 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分析 這道題目的關鍵就在於怎麼算得快,列舉法...