HDU5907 Find Q 数学

题目大意:求当前串中只含q的连续子串的个数

题目思路:水题,但要注意的是计算过程中可能超int范围;

 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 }
View Code

 

posted @ 2016-10-02 14:13  声声醉如兰  阅读(331)  评论(0编辑  收藏  举报