【PAT B級】PATはいくつかあります
タイトルの説明:
文字列
ここで与えられた文字列は、全部で何個のPATを形成することができますか?
入力形式:
入力は1行のみで、文字列が1つ含まれ、長さは105を超えず、P、A、Tの3つのアルファベットのみが含まれます.
出力フォーマット:
与えられた文字列に含まれるPATの数を1行に出力します.結果は比較的大きい可能性があるので、100000007に対して余剰数を取った結果のみ出力します.
サンプルを入力:
出力サンプル:
コード:
文字列
APPAPT
には2つの単語PAT
が含まれており、そのうち第1のPAT
は第2位§、第4位(A)、第6位(T)である.2番目のPATは3位§,4位(A),6位(T)である.ここで与えられた文字列は、全部で何個のPATを形成することができますか?
入力形式:
入力は1行のみで、文字列が1つ含まれ、長さは105を超えず、P、A、Tの3つのアルファベットのみが含まれます.
出力フォーマット:
与えられた文字列に含まれるPATの数を1行に出力します.結果は比較的大きい可能性があるので、100000007に対して余剰数を取った結果のみ出力します.
サンプルを入力:
APPAPT
出力サンプル:
2
コード:
#include
#include
using namespace std;
int main() {
char c; int p=0, pa=0, pat=0;
while(scanf("%c", &c) && c!=' ' && c!='
') {
if(c == 'P') {
p++;
} else if(c == 'A') {
pa += p;
pa = pa%1000000007;
} else {
pat += pa;
pat = pat%1000000007;
}
}
printf("%d
", pat);
return 0;
}