zoukankan      html  css  js  c++  java
  • PAT 乙级 1040 有几个PAT(25)

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


    题解:本题思路比较清晰,先寻找第一个T前面的A的个数,再统计每个A前面P的个数,最后统计起来,
    注意:能满足前面T形成PAT的P和A也一定满足该T后面所有T形成PAT

     1 #include<iostream>
     2 #include<string>
     3 
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     int num_p=0,num=0;
     9     long sum = 0;
    10     string str;
    11     getline(cin, str);
    12 
    13     int length = str.length();
    14 
    15     for (int i = 0; i < length; ++i)
    16     {
    17         if (str[i] == 'P')    
    18             ++num_p;            //统计A前面的P的个数
    19         else if (str[i] == 'A')
    20             num += num_p;        //num统计固定的T前面所有的A前面P的个数相加
    21         else if (str[i] == 'T')
    22             sum+=num;            //统计每个T所存在的PAT总数
    23     }
    24 
    25     cout << sum % 1000000007 << endl;
    26 }
     
  • 相关阅读:
    ssh端口转发
    linux git命令安装
    linux git命令
    linux cpio命令
    linux 抓包工具
    js 深拷贝 ,浅拷贝
    vue $router 打开新窗口
    excel常用操作
    Kafka Topic的增删改查操作
    linux上删除文件名乱码的文件
  • 原文地址:https://www.cnblogs.com/cdp1591652208/p/8283074.html
Copyright © 2011-2022 走看看