思路:统计一串字符有多少个‘A’,并分别统计出每个‘A’前后有多少‘Q’。然后让每个‘A’前后的‘Q’相乘并相加就能得出结果了。
注意:数据的类型,卡了int,要用long long。
还有就是在pc^2上面用gets()读入字符串会WA?
AC代码:
#include#define ll long long#define ms(a) memset(a,0,sizeof(a))using namespace std;const int maxn=1e6+10;char ch[maxn];char a[maxn];ll F[maxn],L[maxn];int main(){// freopen("in.txt","r",stdin);// freopen("11out.txt","w",stdout); int t; cin>>t; while(t--) { ms(ch); ms(a); ms(F); ms(L); scanf("%s",ch); int l=strlen(ch); int k=0; for(int i=0;i =0;i--) { if(a[i]=='Q') y++; else { L[cnt--]=y; } } ll ans=0; for(int i=1;i<=k;i++) { ans=ans+F[i]*L[i]; } printf("%lld\n",ans); } return 0;}