B1040. 有几个PAT(25)。。。解题思路值得学习

来源:互联网 发布:linux内核移植 编辑:程序博客网 时间:2024/06/05 15:04

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

#include<cstdio>#include<iostream>using namespace std;int main(){    int P = 0, PA = 0, PAT = 0;    char c;    while((c=cin.get())!='\n')    {        if (c == 'P')            ++P;        else if (c == 'A')            PA = (PA + P) % 1000000007;        else            PAT = (PAT + PA) % 1000000007;    }    cout << PAT;    system("pause");    return 0;}

参考代码:http://blog.csdn.net/openn7/article/details/50616414
这个解题思路值得学习

0 0