PAT_B_1040 有幾個PAT

題目描述

字符串 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

AC代碼

// 參照別人的巧妙解法
#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

相關文章
相關標籤/搜索