zoukankan      html  css  js  c++  java
  • 51nod 1829 函数

    想知道f:A->B这个函数(其中|A|=n, |B|=m)的所有映射关系要使B的每个元素都要被A的一个元素覆盖到。
    数字可能很大你只要输出方案数模1,000,000,007即可。
    Input
    一共一行两个数,n和m。(1<=n,m<=1,000,000)
    Output
    一共一行包含一个方案数。
    Input示例
    2 2
    Output示例
    2

    话说这个题当时并没有想明白怎么去做

    给定n个有区别的小球,装到m个有区别的箱子里,且没有箱子是空的,求方案数

    所以就是C(m,0)*m^n-C(m,1)*(m-1)^n+...-...

    #include<bits/stdc++.h>
    using namespace std;
    #include<bits/stdc++.h>
    using namespace std;
    const int MD=1e9+7,N=2e6+5;
    int f[N],v[N];
    int C(int n,int m)
    {
        if(m<0||m>n) return 0;
        return 1LL*f[n]*v[m]%MD*v[n-m]%MD;
    }
    int la(int a,int x)
    {
        int ans=1;
        for(;x;a=a*1LL*a%MD,x>>=1)if(x&1)ans=ans*1LL*a%MD;
        return ans;
    }
    int main()
    {
        f[0]=1;
        for (int i=1; i<N; i++) f[i]=1LL*f[i-1]*i%MD;
        v[N-1]=la(f[N-1],MD-2);
        for(int i=N-2; i>=0; i--) v[i]=v[i+1]*(i+1LL)%MD;
        int ans=0,n,m,t=-1;
        cin>>n>>m;
        for(int i=0;i<=m;i++)t=-t,ans=(t*C(m,i)*1LL*la(m-i,n)%MD+ans)%MD;
        cout<<(ans+MD)%MD;
        return 0;
    }
  • 相关阅读:
    (九)分类展示上
    (八)用户退出
    (七)用户登陆
    opencord视频截图
    (六)电子邮件
    (五)密码加密
    (四)用户注册
    (三)首页处理
    this关键字在继承中的使用
    03.swoole学习笔记--web服务器
  • 原文地址:https://www.cnblogs.com/BobHuang/p/9842587.html
Copyright © 2011-2022 走看看