HDU5907 Find Q 数学
题目大意:求当前串中只含q的连续子串的个数
题目思路:水题,但要注意的是计算过程中可能超int范围;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #include<vector> 5 #include<stdio.h> 6 #include<stdlib.h> 7 #include<queue> 8 #include<math.h> 9 #define INF 0x3f3f3f3f 10 #define MAX 1000005 11 #define Temp 1000000000 12 13 using namespace std; 14 15 char str[MAX]; 16 17 long long Find(long long n) 18 { 19 return (n*(n+1))/2; 20 } 21 22 int main() 23 { 24 int T; 25 long long ans,sum; 26 scanf("%d",&T); 27 while(T--) 28 { 29 scanf("%s",str); 30 int len=strlen(str); 31 sum=0; 32 ans=0; 33 for(int i=0; i<len; i++) 34 { 35 if(str[i]=='q') 36 sum++; 37 else 38 { 39 ans+=Find(sum); 40 sum=0; 41 } 42 } 43 ans+=Find(sum); 44 printf("%lld\n",ans); 45 } 46 return 0; 47 }