A1093 Count PAT's (25 分)

一、技术总结

  1. 这是一个逻辑题,题目大职意思是可以组成多少个PAT,可以以A为中心计算两边的P和T,然后数量乘积最后相加便是答案。
  2. 还有一个注意的是每次相加后记得mod,取余,不要等到最后加完再取余,会报错可能会溢出。

二、参考代码

#include<iostream>
#include<cstring>
using namespace std;
const int maxn = 100010;
const int inf = 1000000007;
int leftNump[maxn] = {0};
string str;
int main(){
    getline(cin, str);
    int len = str.length();
    for(int i = 0; i < len; i++){
        if(i > 0) leftNump[i] = leftNump[i-1];
        if(str[i] == 'P'){
            leftNump[i]++;
        }
    }
    int ans = 0, rightNumT = 0;
    for(int i = len-1; i >= 0; i--){
        if(str[i] == 'T') rightNumT++;
        else if(str[i] == 'A'){
            ans = (ans + leftNump[i] * rightNumT) % inf; 
        } 
    } 
    cout << ans;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/tsruixi/p/11883661.html