PAT Nivel B: hay varios PAT

La
cadena del título de la descripciónAPPAPT contiene dos palabras PAT,

  • La primera PATes la primera 2posición P, la primera 4posición A, la primera 6posición T;
  • El segundo PATes el primer 3lugar P, primer 4lugar A, primer 6lugar T.

Dada una cuerda, ¿cuántos se pueden formar en total PAT?

El formato de entrada
de entrada de línea única que comprende una cadena de no más de 10 . 5 , contiene sólo P, A, Ttres tipos de letras.

Formato de
salida Muestra cuántos caracteres están contenidos en una cadena dada en una línea PAT.

Dado que el resultado puede ser relativamente grande, solo se emite el resultado de tomar el resto de 1000000007.

Ingrese la
APPAPT de muestra

Salida de muestra
2



Matemáticas de solución de problemas :

解题思路

  1. Para cada uno A, se puede configurar PAun número de los cuales depende de todos los Pnúmeros anteriores .
  2. Para cada uno T, se puede configurar PATun número de los cuales depende de todos los PAnúmeros anteriores .
#include <iostream>
using namespace std;

typedef long long LL;

const int mod = 1e9 + 7;

int main()
{
    
    
    string s;
    cin >> s;
    
    LL P = 0, PA = 0, PAT = 0;
    for (int i = 0; i < s.size(); i ++)
        if(s[i] == 'P') P ++;
        else if(s[i] == 'A') PA += P;
        else PAT = (PAT + PA) % mod;
    
    cout << PAT << endl;
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_46239370/article/details/113861263
Recomendado
Clasificación