PAT乙級 1040 有幾個PAT(25)

2021-07-22 21:29:54 字數 1090 閱讀 9167

題目

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

輸入格式

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

輸出格式

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

輸入樣例

輸出樣例

pat鏈結

sum of 每個』a』 左邊』p』個數 * 右邊』t』個數

/**

* @tag pat_b_1040

* @date 2016-9-7 17:58-18:20

* @version 1.0

* @language c++

* @ranking 765/583

* @function null

*///sum of 每個'a' 左邊'p'個數 * 右邊't'個數

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 100000;

char str[maxn];

const

long

long mod = 1000000007;

int main(int argc, char

const *argv)

for(int i = 0; iif(str[i] == 'p') left_p++; //'a'左邊'p'的個數

else

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

else right_t++; //'a'左邊't'的個數

}printf("%lld\n",ans );

return

0;}

PAT乙級 1040 有幾個PAT

現給定字串,問一共可以形成多少個 pat?輸入格式 本來是說從pat甲級再開始記錄做題記錄的,但是難度明顯高於我自己的想象,所以現在在乙級題中,覺得特別有價值的需要來記錄一下。自己的 如下 include define m 1000000007 include using namespace std...

PAT 乙級 1040 有幾個PAT

題目 題目鏈結 思路 這道題的思路是從網上搜的,要想知道構成多少個pat,那麼遍歷字串後對於每一a,它前面的p的個數和它後面的t的個數的乘積就是能構成的pat的個數。然後把對於每乙個a的結果相加即可。辣麼就簡單啦,只需要先遍歷字串數一數有多少個t,然後每遇到乙個t呢cntt 每遇到乙個p呢,cntp...

PAT乙級 1040 有幾個PAT

題目 1040 有幾個pat 原先思路自己也知道肯定會超時,還是寫了,畢竟時間複雜度o n3 比較直觀找到每個pa,檢視後續有多少個t,求和。正確思路 看了下大佬的思路,是看每個a前的p和後的t的積,豁然開朗,修改了自己的 全部通過。include using namespace std intma...