51nod 1829 函数 (斯特林数)
来源:互联网 发布:软件产品质量缺陷等级 编辑:程序博客网 时间:2024/06/05 04:34
Description
想知道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 个不同的盒子(值域),盒子不可以为空,求总共的方案数。
答案:
AC 代码
#include <bits/stdc++.h>using namespace std;typedef __int64 LL;const int maxn = 1e6+10;const int mod = 1e9+7;LL mul[maxn];LL inv[maxn];void init(){ mul[0]=1; for(int i=1; i<maxn; i++) mul[i]=(mul[i-1]*i)%mod; inv[0]=inv[1]=1; for(int i=2; i<maxn; i++) inv[i]=(LL)(mod-mod/i)*inv[mod%i]%mod; for(int i=1; i<maxn; i++) inv[i]=(inv[i-1]*inv[i])%mod;}LL C(int n,int m){ return mul[n]*inv[m]%mod*inv[n-m]%mod;}LL mult(LL a,int n){ a%=mod; LL ans = 1; while(n) { if(n&1) ans = (ans*a)%mod; a = (a*a)%mod; n>>=1; } return ans;}int main(){ init(); int n,m; cin>>n>>m; LL ans = 0; for(int i = 0,e = 1; i <= m; i++,e*=-1) ans = (C(m,i) * mult(m-i,n) %mod * e + ans)%mod; cout<<(ans+mod)%mod<<endl; return 0;}
阅读全文
1 0
- 51nod 1829 函数 (斯特林数)
- 51nod 1829 函数
- 51Nod-1829-函数
- 51nod 1829 函数(组合数+容斥)
- 【容斥】51Nod 1829 函数
- 51nod 1829 函数 容斥原理
- 51nod - 1136 欧拉函数(欧拉函数)
- 51nod 1136 欧拉函数(欧拉函数)
- 【51Nod 1379】索函数
- 51nod-1379 索函数
- 51nod 1379 索函数
- 51Nod-1379-索函数
- 51nod 算法马拉松6(索函数)(规律题目)
- 51nod--1240莫比乌斯函数 (数论)
- 51nod-1040-最大公约数之和(欧拉函数)
- 51NOD 1262 扔球(欧拉函数)
- 51nod 1384 全排列(next_permutation()函数)
- 51nod 最长单增子序列 dp+(STL函数)二分
- jdbc 链接数据库配置Properties 方法
- 提高编程技能的10种方法
- 统计学习
- MySQL中的运算符,隐式转换,特有的limit语句
- static 关键字
- 51nod 1829 函数 (斯特林数)
- MVP模式实现接口登陆
- mvp的基本登录(简单实现)
- u-boot支持LCD显示(基于TQ2440)
- 51nod 1791 合法括号子段 (队列)
- SELECT语句详解
- 二分法查找已排序数列中目标数字的位置
- Python学习笔记——模块
- java作业day10/1