http://codeforces.com/contest/894/problem/A
三层for循环暴力可以过,但是这是一道有技巧的题,思路就是利用前缀和数组保存Q的数目,通过枚举A的位置找到符合条件的Q的个数,前缀和数组真强,之前是真的从来没有用过。。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<cmath>
#define ll long long
#define mod 998244353
#define inf 0x3f3f3f3f
using namespace std;
#define ll long long
using namespace std;
int main()
{
int sum[105];
string s;
cin>>s;
int n = s.length();
int num = 0;
for(int i = 0; i < n; i ++)
{
if(s[i] == 'Q')
num ++;
sum[i] = num;
}
int ans = 0;
for(int i = 0; i < n; i ++)
{
if(s[i] == 'A')
ans += sum[i] * (sum[n-1] - sum[i]);
}
cout<<ans<<endl;
return 0;
}