La
cadena del título de la descripciónAPPAPT
contiene dos palabras PAT
,
- La primera
PAT
es la primera2
posiciónP
, la primera4
posiciónA
, la primera6
posiciónT
; - El segundo
PAT
es el primer3
lugarP
, primer4
lugarA
, primer6
lugarT
.
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
, T
tres 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 :
解题思路
:
- Para cada uno
A
, se puede configurarPA
un número de los cuales depende de todos losP
números anteriores . - Para cada uno
T
, se puede configurarPAT
un número de los cuales depende de todos losPA
nú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;
}