国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

PAT-1040. 有幾個PAT(25)

2019-11-11 04:44:11
字體:
來源:轉載
供稿:網友

字符串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

解題思路:按題目思路理解,此題中每一個P都可和之后的每一個A,T組成一個PAT,每一個A都可和之前的P及之后的T組成PAT,每一個T都可和之前的P,A組成PAT。此代碼按照A的數量把每個A能組成的PAT數量相加總和。

提交代碼

#include <stdio.h>#include <string.h>int main(){  char *p,*q;  char a[100002];  int nump = 0,numq = 0,s = 0;  //P,T,PAT的數量  scanf("%s",a);  p = a;  q = &a[strlen(a) - 1];  while(*p != 'P') //讓p指針指向第一個P所在的位置,nump準備計數    p++;  while(*q != 'T') //q指針指向最后一個T所在的位置    q--;  while(*p != 'A') //讓p指針指向第一個A所在的位置  {    if(*p == 'P')  //記下p的個數      nump++;    p++;  }  while(q > p)     //記下當前p位置之后T的個數  {    if(*q == 'T')      numq++;    q--;  }  q = &a[strlen(a) - 1];  while(q > p)  {    if(*p == 'A')   //每遇到一個A,累加能組成PAT的數量    {      s += (nump * numq);      if(s >= 1000000007)        s %= 1000000007;    }    else if(*p == 'P')      nump++;    else if(*p == 'T')      numq--;    p++;  }  PRintf("%d/n",s);  return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广安市| 光泽县| 安宁市| 金川县| 阿图什市| 毕节市| 沾化县| 温泉县| 缙云县| 五华县| 富宁县| 银川市| 平武县| 云龙县| 长泰县| 苏尼特左旗| 尼玛县| 梁山县| 图们市| 安吉县| 玛纳斯县| 监利县| 武乡县| 遂宁市| 渭源县| 嘉鱼县| 肇庆市| 江都市| 大名县| 全州县| 北安市| 镇安县| 饶河县| 瑞金市| 顺昌县| 芮城县| 苍溪县| 罗定市| 固原市| 通海县| 阿拉善盟|