首页 > 其他 > 详细

PAT1040----关于数学题目的解法新思路值得借鉴,字符的配对

时间:2019-07-25 16:15:21      阅读:107      评论:0      收藏:0      [点我收藏+]

字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。

现给定字符串,问一共可以形成多少个 PAT

输入格式:

输入只有一行,包含一个字符串,长度不超过1,只包含 PAT 三种字母。

输出格式:

在一行中输出给定字符串中包含多少个 PAT。由于结果可能比较大,只输出对 1000000007 取余数的结果。

输入样例:

APPAPT

输出样例:

2

/*
* (与PAT字符有关的题目,可回顾一下 1003. 我要通过)
* 1. 重点分析字母A :
* 1.1 A前有P,后有T才能形成PAT;
* 1.2 A能构成的PAT数量 = 之前P的数量 * 之后T的数量
* 2. 突破口:先遍历一遍,获取T的数量
*/

 
#include <stdio.h>
#include<string.h>
#include<iostream>
#include <math.h>
#include <malloc.h>
#include <iomanip>
#include <stdlib.h>
using namespace std;

int main() {
    char str[100001];
    cin>>str;
    long cp=0,ca=0,ct=0;
    for(int i=0;i<strlen(str);i++)
    {
        if(str[i]==T)
        {
            ct++;
        }
    }
    
    for(int i=0;i<strlen(str);i++)
    {
        if(str[i]==P)
        {
            cp++;
        }else if(str[i]==A)
        {
            ca=(ca+cp*ct)%1000000007;
        }else{
            ct--;
        } 
        if(ct==0)
        {
            break;
        }
    }
    cout<<ca;
    return 0;
}

 

PAT1040----关于数学题目的解法新思路值得借鉴,字符的配对

原文:https://www.cnblogs.com/BananaMan/p/11244928.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!