HDU5907 Find Q 数学

Posted 声声醉如兰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于HDU5907 Find Q 数学的主要内容,如果未能解决你的问题,请参考以下文章

HDU 5907 Find Q(字符串)

HDU-1796 How many integers can you find(组合数学dfs)

hdu 4530(数学)

HDU-6608

HDU4336Card Collector (动态规划,数学期望)

HDU4779 Tower Defense 组合数学