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