比赛 NOIP2023模拟赛2 评测结果 MMMMMMMMMMMMMMMM
题目名称 魔药 最终得分 0
用户昵称 黄天乐 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2023-11-14 12:02:36
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio> 
using namespace std;
int n,m;
int dp[10005][10005]; 
bool flag; 
int mod=1e9+7;
int A(int n,int m){
    int x=1,y=1;
    for(int i=1;i<=n;i++)x*=i;
    for(int j=1;j<=m;j++)y*=j;
    return x/y; 
}
int C(int n,int m){
    int x=1;
    for(int i=1;i<=n-m;i++)x*=i;
    return A(n,m)/x;
}
int main(){
    freopen("sleeping.in","r",stdin);
    freopen("sleeping.out","w",stdout);
    cin>>n>>m;
    string a;
    cin>>a;
    if(n<m){
        cout<<0<<endl;
        flag=true;
    }
    int cnt=0;
    for(int i=0;i<a.length();i++){
        if(a[i]=='1')cnt++;
    }
    dp[1][1]=2;
    for(int i=2;i<=n;i++){
        for(int j=1;j<=i;j++){
            dp[i][j]=dp[i-1][j-1]%mod+dp[i-1][j]%mod;
            dp[i][j]%=mod;
        }
    }
    int sum=C(n,cnt);
    int ans1=0,ans2=0;
    if(n>m)ans1=dp[n][m]/(n-1);
    ans2=sum-ans1;
    cout<<ans1<<' '<<ans2<<endl;
    return 0;
}