PAT 1040 有几个PAT(C++实现)

PAT乙级真题 1040 有几个PAT C++实现 题目 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T)。 现给定字符串,问一共可以形成多少个 PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过10^5,只包含 P、A、T 三种字母。 输出格式: 在一行中输出给定字符串中包含多少个 PAT。由于结... 阅读详情

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

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

输入格式:

输入只有一行,包含一个字符串,长度不超过105,只包含 P、A、T 三种字母。

输出格式:

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

输入样例:

APPAPT

输出样例:

2

代码长度限制

16 KB

时间限制

150 ms

内存限制

64 MB

【代码 —— 版本一】

这题自己写的版本比较麻烦,后文有参考别人的版本。

#include <iostream>
#include <string>
using namespace std;


struct pat
{
    long long p_left;
    long long t_right;
};

int main()
{
    string str;
    cin >> str;
    pat* arr;
    long long p_time = 0;
    long long t_time= 0;
    long long a_time= 0;  //第一次遍历用来统计一共几个A,第二次遍历用来表明这是第几个A
    long long i = 0;
    for (i = 0; i < str.size(); i++)
    {
        if (str[i] == 'A')
        {
            a_time++;
        }
    }
    arr = new pat[a_time];
    a_time = 0;
    for (i = 0; i < str.size(); i++)
    {
        if (str[i] == 'P')
            p_time++;
        else if (str[i] == 'A')
        {
            arr[a_time++].p_left = p_time;  //统计每个A左边有几个P
        }
    }
    long long sum = 0;  //计算PAT总数
    a_time--;
    for (i = str.size() - 1; i >= 0; i--)
    {
        if (str[i] == 'T')
            t_time++;
        else if (str[i] == 'A')
        {
            arr[a_time].t_right = t_time;  //统计每个A右边有几个T
            sum = (sum+arr[a_time].p_left * arr[a_time].t_right)%1000000007;
            a_time--;
        }
    }
    cout << sum << endl;
    delete[] arr;
    return 0;
}

【代码——版本2】

逐字符读入,统计T总数

一轮遍历,统计每个A左侧P总数和右侧T总数(左侧遇到一次T就减一次T总数,得到右侧T总数)

#include <iostream>
#include <string>
using namespace std;

int main()
{
    char arr[100001] = { 0 };
    int i = 0;
    int p_time = 0;
    int t_time = 0;
    int a_time = 0;
    int a_count = 0;
    long sum = 0;
    while ((arr[i] = cin.get())!='\n')
    {
        if (arr[i++] == 'T')
            t_time++;
    }
    arr[i] = '\0';
    i = 0;
    while (arr[i])
    {
        if (arr[i] == 'P')
            p_time++;
        else if (arr[i] == 'A')
            sum = (sum + p_time * t_time) % 1000000007;
        else if (arr[i] == 'T')
            t_time--;
        i++;
    }
    cout << sum << endl;
    return 0;
}

【PAT 甲】1093 Count PAT‘s(【PAT 乙】1040 有几个PAT) 【PAT 甲】1093 Count PAT's 【PAT 乙】1040 有几个PAT The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and the 6th characters, and the second one is formed by the 3rd, the 4th, and the 6th characters. Now given any st 阅读详情

相关推荐

D触发器(D Flip-Flop)与D锁存器(D Latch)

在解释这个练习题之前,我们先来简单回顾一下D触发器(D flip-flop)和D锁存器(D latch)的概念,以及它们在数字电路中的作用。这将帮助我们理解所提到的练习。

weixin_65190179的博客 9170

PAT乙级1040 || 有几个PAT(C++)

第五次:(P) P=3;//这个P在第一个A后面,要遇到下一个A才能加进PA里面,这一步只有P++第六次:(T) P=3;//遇见第一个T,执行PAT+=num_of_PA。第四次:(A) P=2;//遇到第一个A,PA+=num_of_P。一个T能构建的PAT数量取决于在这个T之前PA的数量,即,每遇到一个T对应PAT的数量为。while (str.length()

Chen_Xi_Gao_Gao的博客 533

Spyglass实战指南:跨时钟域同步方案深度解析

本文深度解析了Spyglass在跨时钟域同步方案验证中的实战应用。通过真实案例阐述了亚稳态的危害,并详细介绍了从基础的两级同步器到复杂的异步FIFO与握手协议等八大同步方案,以及如何利用Spyglass进行有效配置、检查与问题排查,为提升芯片设计可靠性提供系统性的避坑指南。

weixin_29219189的博客 840

PAT乙级 ——有几个PAT

题目描述 字符串 APPAPT 中包含了两个单词 PAT, 第一个 PAT 是第 2 位 P,第 4 位 A,第 6 位 T; 第二个 PAT 是第 3 位 P,第 4 位 A,第 6 位 T。 现给定字符串,问一共可以形成多少个 PAT? 输入格式 输入只有一行,包含一个字符串,长度不超过10​5​​ ,只包含 P、A、T 三种字母。 输出格式 在一行中输出给定字符串中包含多少个 PAT。 由于结果可能比较大,只输出对 1000000007 取余数的结果。 输入样例 APPAPT 输出样例 2 题解

六级不考550+不改名 234

AIR780E二次开发点灯(LuatOS)

Air780E的LuatOS点灯教程,二次开发教程,可用于所有ec618平台,无需SDK

rootuseres的博客 1万+

Golang面试(一)莉莉丝游戏-Golang后端开发-中台部门

莉莉丝游戏-Golang后端开发-中台部门 开场白,双方自我介绍,对方介绍这个岗位情况,erlang语言,全部转向go。 聊项目,介绍IM架构以及使用Go写的服务简介 动态扩容相关问题:平常30万,现在100万,你们现在是如何应对的? 如果让你调整架构实现动态扩容,你会怎么做?回答了kafka,是一种,应该还要使用docker和k8s以及微服务框架等 如果使用kafka,你是如何确保消息有序?回答了redis,好像没回答到那个点 消息发送失败的问题,如何做到消息不丢?回答持久化存储、拉消息和ACK 发送失

xmcy001122的专栏 3899

1040 有几个PAT (25 分) (C语言)

字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。 现给定字符串,问一共可以形成多少个 PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过105,只包含 P、A、T 三种字母。 输出格式: 在一行中输出给定字符串中包含多少个 PAT。由于结果可能比较大,只输出对 1000000007 取余数的结果。 输入样例: APPAPT 结尾无空

Gong_01的博客 459

maya权重拷贝一对一,一对多

是不是有时候盔甲很多很碎头很大,用代理一个个拷贝很麻烦吧 用下面代码直接运行进行一对多或者一对一拷贝 第一个先选择参考物体,加选其他一堆有的没的有权重或没权重的物体执行一键拷贝,就可以啦 以下是源码送上,带走吧 ------------------------ #! -*- coding:utf -8 -*- #author:liubingdong #date:20...

weixin_30852367的博客 1532

胡凡算法之——有几个PAT

题目如下: 思路:1.这种类型的题有很多,一般的基本思路就是找中间数“A”,知道A之前有a个P,之后有b个“T”,那么对于这一个A来说就有a*b个“PAT”,按此方法将所有“A”所代表的个数加起来,就是所有的个数,也就是所谓的“排列组合”。 2.想到这之后,就剩下一个难题了,怎么找到“A”之前所有的“P”,我们可以用一个数组把每一位是不是“P”表示出来,如果是"P...

dyyay521的博客 383

COMSOL金属氢化物-放氢过程

"层流"的出口设置压降函数,解决“找不到一致的初始值”问题,主要是一开始设置出口为1atm的话,压力场过渡太剧烈,不好找到初始解,要么就先算个稳态流场,这种也能求解。注:P0是根据实测PCT的插值曲线(函数名称为:p_iso)得到的,根据初始质量储氢量wtw0,和初始温度条件T0,然后根据函数p_iso(wtw0)*exp(-deltHd/R_const*(1/T0-1/303.15[K]))求解获得。若"初始步长"选择框不勾上,前面0~5s内的求解容易发散,然后求解失败。2、设置"达西定律"的。

qq_24800941的博客 1930

银河麒麟V10 SP3下NFS客户端挂载失败?5个常见问题排查与修复

本文针对银河麒麟V10 SP3系统中NFS客户端挂载失败的常见问题,提供了5个实战排查方案。从基础服务状态检查到防火墙配置、版本兼容性、/etc/fstab设置及权限映射,详细解析了问题根源与解决方案,帮助用户快速恢复NFS文件共享功能。

weixin_42525005的博客 363

PAT乙级1040:有几个PAT (25)

题目 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T)。 现给定字符串,问一共可以形成多少个 PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过105,只包含 P、A、T 三种字母。 输出格式: 在一行中输出给定字符串中包含多少个 PAT。由于结果可能比较大,只输出对 1000000007 取余数的结果。 输入样例: APPAPT 结尾无空行 输出样例: 2

博客简介 685

AI Agent Harness Engineering 的“热插拔”能力:模块化设计思路

本文我会结合我在大厂做AI Agent平台的实战经验,从核心概念、架构设计、代码实现、落地实战多个维度,给大家详细讲解AI Agent Harness Engineering的核心能力——热插拔的模块化设计思路。我们会从问题根源出发,一步步搭建一个完整的支持热插拔的Agent Harness框架,包含组件抽象、注册中心、生命周期管理、配置驱动、容错机制等核心模块。

AI天才研究院 503

1040 有几个PAT c++

【代码】1040 有几个PAT c++

2402_87773829的博客 149

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

1040 有几个PAT——C/C++实现

1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。 现给定字符串,问一共可以形成多少个 PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过10​5​​,只包含 P、A、T 三种字母。 输出格式...

吉大秦少游 1659

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

PTA 乙级——1040 有几个PAT C++实现

字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T)。 现给定字符串,问一共可以形成多少个 PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过10^​5​​,只包含 P、A、T 三种字母。 输出格式: 在一行中输出给定字符串中包含多少个 PAT。由于结果...

qq_45677518的博客 301

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

1040. 有几个PAT(25)(C++)

字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。现给定字符串,问一共可以形成多少个PAT?输入格式:输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。输出格式:在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果...

qq_41562704的博客 163

Pat乙级 1040 有几个PAT

Pat乙级1040 有几个PAT思路代码 题目网址 https://pintia.cn/problem-sets/994805260223102976/problems/994805282389999616 思路 有点动规的意思,PA出现的次数等于之前PA出现的次数加上当前P的次数(当前字符为’A’时),同理PAT出现的次数等于之前PAT出现的次数加上当前AP出现的次数(当前字符为’T’时)。具体看代码理解。 代码 #include<iostream> #define theNum 100000

ax816的博客 174

1040 有几个PAT

1040 有几个PAT解题代码测试结果问题整理 解题代码 #include<iostream> #include<string> using namespace std; int p, t, r; int main() { string str; cin >> str; for (auto x : str) if (x == 'T') t++; for (auto x : str) { if (x == 'P') p++; if (x == 'T') t-

Aruasg的博客 196

【PAT乙级 1040】有几个PAT C++

字符串APPAPT中包含了两个单词PAT,其中第一个PAT是第 2 位(P),第 4 位(A),第 6 位(T第二个PAT是第 3 位(P),第 4 位(A),第 6 位(T现给定字符串,问一共可以形成多少个PAT?

m0_65154047的博客 447

PAT乙级 1040 有几个PAT

字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T现给定字符串,问一共可以形成多少个 PAT?

polarours的博客 479

PAT 1040 有几个PAT (25分)

1040 有几个PAT (25分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T)。 现给定字符串,问一共可以形成多少个 PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过10​5​​ ,只包含 P、A、T 三种字母。 输出格式: 在一行中输出给定...

ganlanA的博客 1316

PAT甲级 1040

PAT甲级 1040题目 Longest Symmetric String解析代码 题目 Longest Symmetric String Given a string, you are supposed to output the length of the longest symmetric sub-string. For example, given Is PAT&TAP symm...

qq_37208650的博客 232

PAT乙级真题1040 || 有几个PAT(详解,C/C++示例,测试点分析)

几个PAT 题目描述: 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。 现给定字符串,问一共可以...

whenever5225的博客 1705

1040 有几个PAT (25分)

字符串APPAPT中包含了两个单词PAT,其中第一个PAT是第 2 位(P),第 4 位(A),第 6 位(T);第二个PAT是第 3 位(P),第 4 位(A),第 6 位(T)。 现给定字符串,问一共可以形成多少个PAT? 输入格式: 输入只有一行,包含一个字符串,长度不超过10​5​​,只包含P、A、T三种字母。 输出格式: 在一行中输出给定字符串中包含多少个...

一定要站在自己热爱的生活里闪闪发光 3万+
上一篇: PAT 1060 爱丁顿数 (C++实现)
下一篇: 1028 人口普查(C++实现)
Lucid_Winter
博客等级 码龄4年 17粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值