查找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 ;
}
 

最新文章

  1. ligerui_实际项目_001:利用ligerLayout、ligerAccordion实现可折叠的菜单效果
  2. onNewIntent调用时机
  3. JMeter2.13 连接 sql server
  4. hdu1722 bjfu1258 辗转相除法
  5. 【麦克风阵列增强】Delay and sum beamforming
  6. WordCount结对编程
  7. element-ui Form表单校验
  8. java打包发布程序.jar(Eclipse)
  9. Android Activity.startActivity流程简介
  10. 紧急通知:Onion勒索病毒正在大范围传播!已有大量学生中招!(转)
  11. wc命令行程序
  12. CASSANDRA How to import and export data
  13. 【JDBC&amp;Dbutils】JDBC&amp;JDBC连接池&amp;DBUtils使用方法(重要)
  14. 第九周(11.11-11.17)----Beta版本发布140字评论
  15. PHP-根据字符串和所用字体计算字符串所占宽高
  16. Listview getItemViewType的使用
  17. AngularJs学习笔记--Creating Services
  18. 前端对比插件JS
  19. 解决ubuntu的chkconfig[/sbin/insserv 无法找到路径问题]
  20. lua学习笔记(十)

热门文章

  1. Exchanger使用
  2. zookeeper的集群部署
  3. Windows 8.1更新变化
  4. Python中暂未解决的问题
  5. vector draw 试用期结束的 激活方法
  6. C项目实践--俄罗斯方块(2)
  7. ranlib
  8. 定时任务 bash 对远程数据库 备份 读写
  9. [QT开发小结]LNK1104: cannot open file ‘gdi32.lib’ 解决方法
  10. hdu4352(数位DP + LIS(nlogn))