记录编号 600051 评测结果 AAAAAAAAAAAAAAAAAAAAAAAAA
题目名称 [USACO25 Open Gold]Moo Decomposition 最终得分 100
用户昵称 Gravatarwdsjl 是否通过 通过
代码语言 C++ 运行时间 0.787 s
提交时间 2025-04-12 16:11:26 内存使用 4.58 MiB
显示代码纯文本
#include <iostream>
using namespace std;
#define int long long
 
const int mod = 1e9+7;
int k,n,l,f=1,a=1,o=0; 
string s;

int p_w(int x,int y){
    return y?(p_w(x*x%mod,y/2)*(y&1?x:1))%mod:1;
}

signed main(){
	freopen("Moo.in","r",stdin);
	freopen("Moo.out","w",stdout);
    cin>>k>>n>>l>>s; 
	s=" "+s;

    int i=1;
	while(i<=k){
		f=f*i++%mod;
	}
	f=p_w(f,mod-2);
	
 for(int i=n;i;--i)
        if(s[i]=='O') o++;
        else{
            int c=1;
            int j=o-k+1;
            while(j<=o){
            	c=c*j++%mod;
			}
            a=a*c%mod*f%mod;
            o-=k;
        }
    
    cout<<p_w(a,l);
	return 0;
}