1040 有幾個pat (25分)
現給定字串,問一共可以形成多少個pat
?
輸入只有一行,包含乙個字串,長度不超過105,只包含p
、a
、t
三種字母。
在一行中輸出給定字串中包含多少個pat
。由於結果可能比較大,只輸出對 1000000007 取餘數的結果。
2
尋找每乙個a左邊的p的個數和右邊的t的個數,把問題轉化為p和t的排列組合問題,即對於每乙個a來說,一共有np (p的個數) * nt (t的個數) 種可能,將每乙個a的可能情況相加,即是總數。
#includeusing namespace std;
int main()
for (int i = a.length() - 1; i >= 0; i--)//記錄每乙個a後t的個數,並計算a前p的個數和a後t的個數的乘積
}printf("%d", sum % 1000000007);
}
1040 有幾個PAT 25 分
現給定字串,問一共可以形成多少個pat?輸入只有一行,包含乙個字串,長度不超過10 5 只包含p a t三種字母。在一行中輸出給定字串中包含多少個pat。由於結果可能比較大,只輸出對 1000000007 取餘數的結果。2 includeusing namespace std int countp ...
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...