PAT成长之路——1040 有几个PAT (25 分)

版权声明:有善始者实繁,能克终者盖寡。 https://blog.csdn.net/weixin_43987810/article/details/86765087

题目:

1040 有几个PAT (25 分)

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

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

输入格式:

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

输出格式:

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

输入样例:

APPAPT

输出样例: 

2

分析:边扫描, 边记录p,pa, pat的个数。

代码如下:

#include <cstdio>
#include <cstring>

int main()
{
  char s[100010];
  int p, pa, pat;
  int i, j;
  int len;
  
  p = pa = pat = 0;
  scanf("%s", s);
  len = strlen(s);
  for(i = 0; i < len; i++)
  {
    if(s[i] == 'P')
      p++;
    else if(s[i] == 'A')
      pa = (pa + p) % 1000000007;
    else pat = (pat + pa) % 1000000007;
  }
  printf("%d\n", pat);
  
  return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43987810/article/details/86765087