洛谷 P2646 數數zzy
阿新 • • 發佈:2017-11-23
-m 思路 iostream 輸出格式 include right 描述 sca ack
P2646 數數zzy
題目描述
zzy自從數學考試連續跪掉之後,上數學課就從來不認真聽了(事實上他以前也不認真聽)。於是他開始在草稿紙上寫寫畫畫,比如寫一串奇怪的字符串。然後他決定理♂性♂愉♂悅♂一下:統計這串字符串當中共有多少個為“zzy”的子序列(註意是子序列而非子串)。但是由於他寫的字符串實在是太長啦,而且他是個超級大蒟蒻,根本就數不過來。所以他決定請求你這個超級大神犇的幫助。你可以幫幫他嗎?
輸入輸出格式
輸入格式:
一行僅含小寫字母的字符串。
輸出格式:
一行,一個非負整數,表示輸入的字符串中為“zzy”的子序列的個數。
輸入輸出樣例
輸入樣例#1: 復制zlzhy
輸出樣例#1: 復制
1
說明
70%的數據滿足:1<=n<=100。
100%的數據滿足:1<=n<=1000000。
n表示字符串的長度
數據保證答案不超過2^63-1
思路:數學
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; char s[1000010]; long long sum[1000010];long long ans,len,num; int main(){ scanf("%s",s); len=strlen(s); for(int i=1;i<=1000000;i++) sum[i]=sum[i-1]+i; for(int i=0;i<len;i++){ if(s[i]==‘z‘) num++; if(s[i]==‘y‘) ans+=sum[num-1]; } cout<<ans; }
洛谷 P2646 數數zzy