hdoj5698
果然以前不想搞的东西,今天他妈全来了,我要爆炸,除了说操。。。。真是欲哭无泪啊。。。。。
//这道题目卡在逆元了。。。。
//利用逆元计算1/(n!(m-n)!)
//对于正整数a,m如果有ax≡1(modm),那么把这个同余方程中x的最小正整数解叫做a模m的逆元。
problem1:
//这道题为什么要有乘法逆元呢?
模运算与基本四则运算有些相似,但是除法例外。其规则如下:
若a≡b (% p),则对于任意的c,都有(a + c) ≡ (b + c) (%p);
●
若a≡b (% p),则对于任意的c,都有(a * c) ≡ (b * c) (%p);
●
若a≡b (% p),c≡d (% p),则 (a + c) ≡ (b + d) (%p),(a - c) ≡ (b - d) (%p),
(a * c) ≡ (b * d) (%p),(a / c) ≡ (b / d) (%p);
problem2:
怎么求逆元:
//逆元一般用【扩展欧几里得】算法来求得,但是这里的m是素数,那么还可以根据【费马小定理】得到逆元为 a^m-2 mod m。
#include<cstdio>
#include<algorithm>
typedef long long LL;
using namespace std;
const int maxn = 1e6+7;
const int mod = 1e9+7;
long long fac[maxn];
long long qpow(long long a,long long b)
{
long long ans=1;
a%=mod;
while(b)
{
if(b%2)
ans=ans*a%mod;
a=a*a%mod;
b/=2;
}
return ans;
}
long long C(long long n,long long m)
{
if(m>n||m<0)return 0;
long long s1=fac[n];
long long s2=fac[n-m]*fac[m]%mod;
// printf("%lld %lld\n",s1,s2);
return s1*qpow(s2,mod-2)%mod;
}
int n,m;
int main()
{
fac[0]=1;
for(int i=1;i<maxn;i++)
fac[i]=fac[i-1]*i%mod;
LL a,b;
while(scanf("%d%d",&n,&m)!=EOF)
printf("%lld\n",C(n+m-4,n-2));
}
hdoj5698的更多相关文章
随机推荐
- Android App 隐藏标题栏+状态栏+导航栏
1. 隐藏当前Activity标题栏 在当前Activity中调用:this.requestWindowFeature(Window.FEATURE_NO_TITLE); 2. 隐藏当前Activit ...
- Yii之路(第八)
[URL地址美化]给域名地址做一个别名伪静态.通过设置服务器服务.做域名地址的转换工作. urlManager地址美化,通过程序的方式实现地址的美化工作 http://xxxxx.com/index. ...
- IOS7 开发注意事项
1,修改状态栏的样式和隐藏. 首先,需要在Info.plist配置文件中,增加键:UIViewControllerBasedStatusBarAppearance,并设置为YES: 然后,在UIVie ...
- Django-权限信息初始化
数据库 from django.db import models class Menu(models.Model): """ 菜单组: """ ...
- 王立平--Unity破解
1.下载破解工具.关闭Unity,打开破解工具 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQyNTUyNw==/font/5a6L5L2T/ ...
- ubuntu git ssh不通
xyh@ubuntu-64:~$ ssh -v git@danxinben.com ...
- Python开发【迭代器】
1.迭代器 1.1.迭代器创建:指定数据创建迭代器(使用iter()和next() ) x = [1, 2, 3] #定义一个列表:<class 'list'> y = iter(x) # ...
- 编程算法 - 数组中出现次数超过一半的数字 代码(C)
数组中出现次数超过一半的数字 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 数组中有一个数字出现的次数超过数组长度的一半, 请找出这个数字. ...
- STL review:vector & string & map & struct
I.vector 1.头文件:#include<vector> //容器vector是一个能实现随机存取.插入删除的动态数组,还可以当栈使. ...
- 2016/06/09 ThinkPHP3.2.3使用分页
效果图: