PAT乙级.1040. 有几个PAT(25)
来源:互联网 发布:js对象属性的访问方法 编辑:程序博客网 时间:2024/05/16 16:48
1040. 有几个PAT(25)
题目
字符串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
PAT链接
思路
sum of 每个’A’ 左边’P’个数 * 右边’T’个数
代码
/*** @tag PAT_B_1040* @authors R11happy (xushuai100@126.com)* @date 2016-9-7 17:58-18:20* @version 1.0* @Language C++* @Ranking 765/583* @function null*///sum of 每个'A' 左边'P'个数 * 右边'T'个数#include <cstdio>#include <cstdlib>#include <cstring>#include <cstring>using namespace std;const int maxn = 100000;char str[maxn];const long long MOD = 1000000007;int main(int argc, char const *argv[]){ long long sum_T = 0L; long long left_P = 0L, right_T = 0L; long long ans = 0L; gets(str); int len = strlen(str); //统计总的'T'个数 for(int i = 0; i<len; i++) { if(str[i] == 'T') sum_T++; } for(int i = 0; i<len; i++) { if(str[i] == 'P') left_P++; //'A'左边'P'的个数 else if(str[i] == 'A') { ans += left_P * (sum_T - right_T) % MOD; ans = ans % MOD; } else right_T++; //'A'左边'T'的个数 } printf("%lld\n",ans ); return 0;}
收获
0 0
- PAT乙级 有几个PAT(25)
- PAT乙级—1040. 有几个PAT(25)-native
- 1040. 有几个PAT(25)-PAT乙级真题
- PAT乙级.1040. 有几个PAT(25)
- PAT 乙级 1040. 有几个PAT(25)
- PAT乙级 1040. 有几个PAT(25)
- PAT 乙级 1040. 有几个PAT(25)
- PAT乙级 1040. 有几个PAT(25)--数学问题
- [PAT乙级]1040. 有几个PAT(25)
- PAT乙级1040. 有几个PAT(25)
- pat 乙级 1040. 有几个PAT(25)
- PAT 乙级 1040. 有几个PAT(25)
- PAT乙级1040. 有几个PAT(25)
- PAT乙级真题 1040. 有几个PAT(25)
- 1040. 有几个PAT(25) PAT乙级真题
- 1040. 有几个PAT(25)PAT乙级&&1093. Count PAT's (25) PAT甲级
- [PAT-乙级]1040.有几个PAT
- 【PAT】1040. 有几个PAT(25)
- Linux-系统管理-dstat
- HDU 4004 The Frog's Games(二分)
- 3. Longest Substring Without Repeating Characters--2016/09/19
- 京东面试算法题-爬山
- JavaScript-05
- PAT乙级.1040. 有几个PAT(25)
- 时间戳转换成时间 php
- 树状数组优化dp——nkoj3771公共汽车
- 《开源应用架构》读书笔记:分布式Web系统设计原则
- Android 五大布局方式
- 进制之间的转换
- java基础知识-数据库
- ParameterizedType获取java泛型参数类型
- Linux-系统管理-ssh常用参数