字符串APPAPT中包含了兩個單詞“PAT”,其中第一個PAT是第2位(P),第4位(A),第6位(T);第二個PAT是第3位(P),第4位(A),第6位(T)。 現給定字符串,問一共可以形成多少個PAT?
輸入格式:
輸入只有一行,包含一個字符串,長度不超過105,只包含P、A、T三種字母。
輸出格式: 在一行中輸出給定字符串中包含多少個PAT。由于結果可能比較大,只輸出對1000000007取余數的結果。
輸入樣例: APPAPT
輸出樣例: 2
Answer:
#include<iostream>#include<vector>using namespace std;int main() { long long count = 0; char input[100001]; cin >> input; int i = 0; long long p = 0, a = 0; while(input[i]) { while(input[i]=='P') { p++; i++; } while(input[i]=='A') { a+=p; i++; } while(input[i]=='T') { count += a; i++; } } cout << count%1000000007;}PS. 本來想要是能一下五個問題都一次通過就好了。 然而運行超時了。雖然運行超時也在意料之中吧。 所以改了算法。 好像又學到了什么。 笑。
新聞熱點
疑難解答