比赛 26暑假集训模拟赛3 评测结果 AAAAAAAAAAAAAAAAAAAAAAAAA
题目名称 Moo Decomposition 最终得分 100
用户昵称 dream 运行时间 0.984 s
代码语言 C++ 内存使用 4.07 MiB
提交时间 2026-07-06 09:09:25
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
ll ans=1;
ll k,n,l;
string s;
ll qpow(ll a,ll b){
    ll res=1;
    while(b){
    	if(b&1){
    		res*=a;
    		res%=mod;
		}
		b>>=1;
		a*=a;
		a%=mod;
	}
	return res;
}
ll C(ll x,ll y){
	ll res=1,res2=1;
	for(ll i=x;i>=x-y+1;i--){
		res*=i;
		res%=mod;
	}
	for(ll i=1;i<=y;i++){
		res2*=i;
		res2%=mod;
	}
	res*=qpow(res2,mod-2);
	res%=mod;
	return res;
}
int main(){
    freopen("Moo.in","r",stdin);
    freopen("Moo.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>k>>n>>l;
    cin>>s;
    ll so=0;
    for(ll i=n-1;i>=0;i--){
    	if(s[i]=='O'){
    		so++;
		}
		else{
			ans*=C(so,k);
			ans%=mod;
			so-=k;
		}
    }
    ans=qpow(ans,l);
    ans%=mod;
    cout<<ans;
    return 0;
} 
/*
2 12 1
MMMOOOOOMOOO
*/