日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ACM_查找ACM(加强版)

發布時間:2023/10/11 编程问答 57 如意码农
生活随笔 收集整理的這篇文章主要介紹了 ACM_查找ACM(加强版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

查找ACM(加強版)

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

作為一個acmer,應該具備團隊合作能力和分析問題能力。給你一個只有a,c和m的字符串,你要依次取3個字母使之恰好為acm。 比如串 accmmmca 你可以取 12345678
ac_m____
ac__m___
ac___m__
a_cm____
a_c_m___
a_c__m__共6種。 你只要給出給你的串有多少種方案能組成acm。

Input:

輸入包含多組測試,對于每組測試,輸入一個只有acm3種字母的串(長度<=200000)

Output:

對于每組測試,輸出一個整數一行,表示給你的串有多少種方案能組成acm。

Sample Input:

accmmmca

Sample Output:

6
解題思路:先打表每個字符下,前面'a'的個數,然后從后往前遍歷,計算'm'的個數,當遇到字符'c'時,即將前面'a'的個數cnt[i]乘以后面'm'的個數,迭代計算,但要注意的是兩數相乘會爆int,所以先強轉成long long,再做計算,這樣就不會爆int了。
 #include<bits/stdc++.h>
using namespace std;
const int N = ;
typedef long long LL;
char s[N];
int cnt[N];
int main()
{
while(cin>>s){
int a=,m=,len=strlen(s);
for(int i=;i<len;++i){
if(s[i]=='a')a++;
cnt[i]=a;
}
LL ans=;
for(int i=len-;i>=;--i){
if(s[i]=='m')++m;
if(s[i]=='c')ans+=(LL)m*cnt[i];
}
cout<<ans<<endl;
}
return ;
}
 

總結

以上是生活随笔為你收集整理的ACM_查找ACM(加强版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。