zoukankan      html  css  js  c++  java
  • PAT1040----关于数学题目的解法新思路值得借鉴,字符的配对

    字符串 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;
    }
  • 相关阅读:
    Case study, about cnblogs
    《Windows用户态程序高效排错》
    为什么java+winform就那么慢呢
    Mixed DLL Loading analysis
    <a>标签无跳转
    各情景下元素宽高的获取
    在Asp.Net中使用FCKeditor的常用配置
    Small Program 1.0 发布
    微软会向开发者收费吗?
    BO入门实战
  • 原文地址:https://www.cnblogs.com/BananaMan/p/11244928.html
Copyright © 2011-2022 走看看