1040 有几个PAT (25 分)
字符串 APPAPT
中包含了两个单词 PAT
,其中第一个 PAT
是第 2 位(P
),第 4 位(A
),第 6 位(T
);第二个 PAT
是第 3 位(P
),第 4 位(A
),第 6 位(T
)。
现给定字符串,问一共可以形成多少个 PAT
?
输入格式:
输入只有一行,包含一个字符串,长度不超过10510^5105,只包含 P
、A
、T
三种字母。
输出格式:
在一行中输出给定字符串中包含多少个 PAT
。由于结果可能比较大,只输出对 1000000007 取余数的结果。
输入样例:
APPAPT
输出样例:
2
C语言代码实现
//
// Created by hejinyang on 19-6-22.
//
#if 0
#include <stdio.h>
#include <string.h>
int findCharNum(char ch, char *start_pos, char *end_pos) {
int num = 0;
for (char *p = start_pos; p != end_pos; p++) {
if (*p == ch) {
num++;
}
}
return num;
}
int main(int argc, char *argv[]) {
char str[100001];
scanf("%s", str);
char *end_pos = str + strlen(str); //指向'\0'
long long cunt = 0;
long long P_num = 0, T_num = 0;
char *A_pos = strchr(str, 'A');
char *last_A_pos = str;
int first = 1;
while (A_pos != NULL) {
P_num = P_num + findCharNum('P', last_A_pos, A_pos);
if (first) {
T_num = findCharNum('T', A_pos+1, end_pos);
first = 0;
} else {
T_num = T_num - findCharNum('T', last_A_pos, A_pos);
}
cunt += P_num * T_num;
last_A_pos = A_pos;
A_pos = strchr(A_pos + 1, 'A');
}
printf("%lld", cunt % 1000000007);
return 0;
}
#endif
结果
提交时间 | 状态 | 分数 | 题目 | 编译器 | 耗时 | 用户 |
---|---|---|---|---|---|---|
2019/6/23 00:19:50 |
答案正确
| 25 | 1040 | C (gcc) | 5 ms | hejinyang |
测试点 | 结果 | 耗时 | 内存 |
---|---|---|---|
0 | 答案正确 | 2 ms | 368 KB |
1 | 答案正确 | 3 ms | 256 KB |
2 | 答案正确 | 3 ms | 384 KB |
3 | 答案正确 | 5 ms | 364 KB |
4 | 答案正确 | 3 ms | 384 KB |