1040 有幾個PAT 25 分

2021-09-26 09:29:24 字數 1085 閱讀 2639

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

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

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

2
#includeusing namespace std;

int countp[100005];

int main()coutint main()

for (int i = 0; i < len; i++)

cout << result;

return 0;

}

ps:假設神奇的你對每次都遇到的神奇的為什麼要對1000000007取模感興趣,請戳

大數階乘,大數的排列組合等,一般都要求將輸出結果對1000000007取模(取餘)

為什麼總是1000000007呢= =

大概≖‿≖✧是因為:(我猜的,不服你打我呀~)

1. 1000000007是乙個質數(素數),對質數取余能最大程度避免衝突~

2. int32位的最大值為2147483647,所以對於int32位來說1000000007足夠大

3. int64位的最大值為2^63-1,對於1000000007來說它的平方不會在int64中溢位

所以在大數相乘的時候,因為(a∗b)%c=((a%c)∗(b%c))%c,所以相乘時兩邊都對1000000007取模,再儲存在int64裡面不會溢位

。◕‿◕。

收穫不小~~~

1040 有幾個PAT 25 分

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

1040 有幾個PAT 25分

思路分析一 此題如果直接暴力會超時,所以應該找到規律。通過觀察輸出結果其實就是對於乙個確定位置的a來說,其左邊p的個數乘以其右邊的t的個數。那麼接下來的工作就是統計確定位置a左邊的p的個數。可以設定乙個資料leftnump,記錄p的個數。如果當前位i是p,那麼leftnump i 否則,leftum...

1040 有幾個PAT 25分

現給定字串,問一共可以形成多少個pat?輸入只有一行,包含乙個字串,長度不超過10 5 只包含p a t三種字母。在一行中輸出給定字串中包含多少個pat。由於結果可能比較大,只輸出對 1000000007 取餘數的結果。我新增了一部分除錯輸出,繼而明白了 一丟丟吧,其實查詢pat,當且僅當找到p,再...