QEDfalse2024年校赛M题题解

原题链接:M  As far as I know

这道题只需要记录字符串knowiasfaras中,每个字符对应的前一个字符的个数累加取模,最后输出最后一个字符存储的数据就可以了,废话不多说,直接放出代码

#include <bits/stdc++.h>

using namespace std;
using ll=long long;
using ull=unsigned long long;
const int mod=998244353;

int main(){
	string s,m;
	m="asfarasiknow";
	cin>>s;
	vector<ull>v(m.size(),0);
	for(int i=0;i<s.size();i++){
		if(s[i]=='a'){
			v[0]++;
			v[3]+=v[2]; v[3]%=mod; //好事多模
			v[5]+=v[4]; v[5]%=mod;
		}
		else if(s[i]=='s'){
			v[1]+=v[0]; v[1]%=mod;
			v[6]+=v[5]; v[6]%=mod;
		}
		else if(s[i]=='f'){
			v[2]+=v[1]; v[2]%=mod;
		}
		else if(s[i]=='r'){
			v[4]+=v[3]; v[4]%=mod;
		}
		else if(s[i]=='i'){
			v[7]+=v[6]; v[7]%=mod;
		}
		else if(s[i]=='k'){
			v[8]+=v[7]; v[8]%=mod;
		}
		else if(s[i]=='n'){
			v[9]+=v[8]; v[9]%=mod;
		}
		else if(s[i]=='o'){
			v[10]+=v[9]; v[10]%=mod;
		}
		else if(s[i]=='w'){
			v[11]+=v[10]; v[11]%=mod;
		}
	}
	cout<<v[11]<<endl;
	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值