• PAT 乙级 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
    

    总结:

    /*
        本题的解法非常类似"在线处理"的思想.
        观察下面3段字符串:
        PA (只能组成1个PA)
        PAPA (第一个A能组成1个PA, 第2个A能组成2个PA(=该A前P的个数), 一共1+2=3个PA)
        PAPAPA (1 + 2 + 3 = 6个PA)
        现在我们看一下PAPAATTPATTT这个字符串, 我们不要一开始就盯着PAT这
        3个字符, 而是先看字符串里有多少P, 再看有多少PA, 最后确定有多少PAT.
        从左到右一个一个字符的看, 下面我给字符串标上号
        PAPAATTPAT T T
        0123456789 10 11
        走到下标0, P=1, PA=0, PAT=0
        走到下标1, P=1, PA=1, PAT=0
        走到下标2, P=2, PA=1, PAT=0
        走到下标3, P=2, PA=1+2=3, PAT=0
        走到下标4, P=2, PA=3+2=5, PAT=0
        走到下标5, P=2, PA=5, PAT=5
        走到下标6, P=2, PA=5, PAT=5+5=10
        走到下标7, P=3, PA=5, PAT=10
        走到下标8, P=3, PA=5+3=8, PAT=10
        走到下标9, P=3, PA=8, PAT=10+8=18
        走到下标10, P=3, PA=8, PAT=18+8=24
        走到下标0, P=3, PA=8, PAT=24+8=34
        寥寥10几行搞定,  思想太重要了.
        注意取余数是在中间过程就取, 不用等到最后总数再取余.
    */
    
    // #include <iostream>
    #include <cstdio>
    
    #define MOD 1000000007
    
    // using namespace std;
    
    const int maxn = 100010;
    
    int main() {
        char str[maxn];
        while(~scanf("%s", str)) {
            long long p = 0, pa = 0, pat = 0;   //P PA PAT 的个数
            for(int i = 0; str[i]; ++i) {
                if(str[i] == 'P')
                    ++p;
                if(str[i] == 'A')
                    pa = (pa + p) % MOD;
                if(str[i] == 'T')
                    pat = (pat + pa) % MOD;
            }
            printf("%lld
    ", pat);
        }
        // system("pause");
        return 0;
    }

    参考:1040. 有几个PAT(25)

  • 相关阅读:
    java泛型
    枚举类与可变参数
    JAVA反射实现JdbcTemplate中查询方法 返回的结果集自动封装成对应的JAVABean对象
    JAVA反射之内省
    JAVA反射基础
    java反射实现将HashMap中的键值对封装为一个JavaBean对象
    hexo配置发布至ssh非22端口服务器
    Exception -LoggerFactory is not a Logback LoggerContext but Logback is on the classpath
    去重优化
    两个域名指向同一服务器的非80端口
  • 原文地址:https://www.cnblogs.com/cralor/p/12567477.html
Copyright © 2020-2023  润新知