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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

PAT-1040. 有幾個PAT(25)

2019-11-11 03:31:55
字體:
供稿:網(wǎng)友

字符串APPAPT中包含了兩個單詞“PAT”,其中第一個PAT是第2位(P),第4位(A),第6位(T);第二個PAT是第3位(P),第4位(A),第6位(T)。

現(xiàn)給定字符串,問一共可以形成多少個PAT?

輸入格式:

輸入只有一行,包含一個字符串,長度不超過105,只包含P、A、T三種字母。

輸出格式:

在一行中輸出給定字符串中包含多少個PAT。由于結(jié)果可能比較大,只輸出對1000000007取余數(shù)的結(jié)果。

輸入樣例:
APPAPT輸出樣例:

2

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

提交代碼

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


上一篇:linux socket

下一篇:C# ??合并運算符

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 常州市| 中宁县| 绥芬河市| 洪江市| 犍为县| 阿瓦提县| 汕尾市| 巴里| 宝山区| 章丘市| 老河口市| 梅河口市| 巨鹿县| 大名县| 铁力市| 教育| 赤峰市| 修文县| 赣州市| 社会| 新建县| 申扎县| 永吉县| 封开县| 沽源县| 彰化市| 瑞昌市| 敦化市| 全椒县| 南开区| 静海县| 凤山县| 民县| 郧西县| 阜南县| 金堂县| 伽师县| 杭锦后旗| 林口县| 介休市| 介休市|