#4020. erewrwerwer(erw)

题目描述

给你一个字符串,请问其有多少个子序列(可以非连续)为 erewrwerwer erewrwerwer erewrwerwer 。
输入格式

一行一个字符串,由小写字母’e’、’w’或者’r’组成。
输出格式

一行一个整数,表示子序列为 erewrwerwer erewrwerwer erewrwerwer 的个数,模 109+7 10^9+7 109+7 。
样例
样例输入

erewrwerwererewrwerwer

样例输出

260

数据范围与提示

设 n n n 为字符串长度

对于前 20% 20 % 20% 的数据, n≤11 n \le 11 n≤11

对于另外 30% 30 % 30% 的数据, n≤20 n \le 20 n≤20

对于 100% 100 % 100% 的数据, n≤105 n \le 10^5 n≤105
来源

东师附中集训

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
const long long mod=1000000007;
long long cnt[12];
string a;
int main()
{

	cin>>a;
	for(int i=0;i<a.size();i++){
		char b=a[i];
		if(b=='e'){
			cnt[1]=(cnt[1]+1)%mod;
			cnt[3]=(cnt[3]+cnt[2])%mod;
			cnt[7]=(cnt[7]+cnt[6])%mod;
			cnt[10]=(cnt[10]+cnt[9])%mod;
		}
		if(b=='w'){
			cnt[4]=(cnt[4]+cnt[3])%mod;
			cnt[6]=(cnt[6]+cnt[5])%mod;
			cnt[9]=(cnt[9]+cnt[8])%mod;
		}
		if(b=='r'){
			cnt[2]=(cnt[2]+cnt[1])%mod;
			cnt[5]=(cnt[5]+cnt[4])%mod;
			cnt[8]=(cnt[8]+cnt[7])%mod;
			cnt[11]=(cnt[11]+cnt[10])%mod;
		}
	}
	cout<<(cnt[11])%mod<<endl;
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值