PAT 乙级 1040 有几个PAT (25分)

独自空忆成欢 提交于 2020-01-28 05:18:17

1040 有几个PAT (25分)

字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T)。

现给定字符串,问一共可以形成多少个 PAT?

输入格式:

输入只有一行,包含一个字符串,长度不超过10
​5
​​ ,只包含 P、A、T 三种字母。

输出格式:

在一行中输出给定字符串中包含多少个 PAT。由于结果可能比较大,只输出对 1000000007 取余数的结果。

输入样例:

APPAPT

输出样例:

2

作者: CAO, Peng
单位: Google
时间限制: 150 ms
内存限制: 64 MB
代码长度限制: 16 KB

#include <iostream>
using namespace std;
int main(){
    string input;
    cin>>input;
    long long ans = 0,number_p = 0,number_t = 0;
    for (int i = 0; i < input.length(); ++i)
        if(input[i] == 'T')
            number_t++;
    for (int i = 0; i < input.length(); ++i) {
        if(input[i] == 'T')
            number_t--;
        if(input[i] == 'P')
            number_p ++;
        if(input[i] == 'A'){
            ans += number_p * number_t;
            ans %= 1000000007;
        }
    }
    cout<<ans;
    return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!