字符串 APPAPT 中包含了兩個單詞 PAT,其中第一個 PAT 是第 2 位(P),第 4 位(A),第 6 位(T);第二個 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。 現給定字符串,問一共能夠造成多少個 PAT? 輸入格式: 輸入只有一行,包含一個字符串,長度不超過10^5 ,只包含 P、A、T 三種字母。 輸出格式: 在一行中輸出給定字符串中包含多少個 PAT。因爲結果可能比較大,只輸出對 1000000007 取餘數的結果。 輸入樣例: APPAPT 輸出樣例: 2
// 參照別人的巧妙解法 #include <stdio.h> #define LIM 1000000007 int main() { int P = 0, PA = 0, PAT = 0; char c; while((c = getchar()) != '\n') { if(c == 'P') P++; if(c == 'A') PA = (PA + P) % LIM; if(c == 'T') PAT = (PAT + PA) % LIM; } printf("%d", PAT); return 0; }
RRRspa