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 }
以上是关于HDU5907 Find Q 数学的主要内容,如果未能解决你的问题,请参考以下文章
HDU-1796 How many integers can you find(组合数学dfs)