zoukankan      html  css  js  c++  java
  • PAT 1040

    字符串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 <iostream>
    #include <string.h>
    #include <algorithm>
    #include <math.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    
    using namespace std;
    #define MAX 100000
    const long long int  MOD=1e9+7;
    char a[MAX+5];
    int b[MAX+5];//左边有多少个P
    int c[MAX+5];//右边有多少个T
    long long int ans;
    long long int num;
    int main()
    {
        while(scanf("%s",a+1)!=EOF)
        {
            int len=strlen(a+1);
            memset(b,0,sizeof(b));
            memset(c,0,sizeof(c));
            for(int i=1;i<=len;i++)
            {
                if(a[i]=='P')
                    b[i]=b[i-1]+1;
                else
                     b[i]=b[i-1];
            }
            for(int i=len;i>=1;i--)
            {
                 if(a[i]=='T')
                    c[i]=c[i+1]+1;
                else
                    c[i]=c[i+1];
            }
    
            ans=0;
            for(int i=1;i<=len;i++)
            {
                if(a[i]=='A')
                {
                    num=b[i]*c[i];
                    (ans+=num%MOD)%=MOD;
                }
            }
            printf("%d
    ",ans);
        }
    }
  • 相关阅读:
    cf605 div3
    how to find Longest Increasing Subsequence Size
    luogu1641 [SDOI2010]生成字符串
    luogu1441 砝码称重
    luogu4218 [JSOI2008] 最小生成树计数
    luogu1514 引水入城
    luogu1312 Mayan游戏 剪枝
    luogu1081 开车旅行 树上倍增
    luogu1052 过河
    luogu1026 统计单词个数
  • 原文地址:https://www.cnblogs.com/dacc123/p/8228759.html
Copyright © 2011-2022 走看看