除法取模练习(51nod 1119 & 1013 )
思路:求C(m+n-2,n-1) % 10^9 +7 (2<=m,n<= 1000000)
在求组合数时,一般都通过双重for循环c[i][j] = c[i-1][j] + c[i-1][j-1]直接得到。
但是m,n都很大时,就会超时。
利用公式:C(n,r) = n! / r! *(n-r)! 与 a/b = x(mod M) -> a * (b ^ (M-2)) =x (mod M) 进行求解
费马小定理:对于素数 M 任意不是 M 的倍数的 b,都有:b ^ (M-1) = 1 (mod M)
a/b = x(mod M) -> a * (b ^ (M-2)) =x (mod M)的推导:
只要 M 是一个素数,而且 b 不是 M 的倍数,就可以用一个逆元整数 b’,通过 a / b = a * b' (mod M),来以乘换除。
a/b = x(mod M)
a / b = a / b * (b ^ (M-1)) = a * (b ^ (M-2)) = x(mod M)
而b ^ (M-2) mod M 就是逆元整数 b`。
所以最终要求的 x = n! *[r! *(n-r)!]^(M-2) (mod M)
#include <cstdio>
#include <string> const int mod = ;
const int maxN = 1e6;
long long c[maxN* +];
int m,n; void init(){
c[] = ;
c[] = ;
for(int i =; i <= maxN*+; i++)
c[i+] = (c[i] *(i+) ) % mod;
}
int main(){
init();
while(~scanf("%d%d",&n,&m))
{
long long ans = c[n - + m - ];
ans = (ans * pow(c[n-],mod - )) % mod;
ans = (ans * pow(c[m - ] ,mod - )) % mod;
printf("%lld\n",ans);
}
return ;
}
题目:1013 3的幂的和
思路:用公式求 等比数列 % 10^9+7
这仍旧是除法取模;
sn=(a1(q^n-1))/(q-1) % M = (a1(q^n-1))*(q-1)^ (M -1) % M;
#include <iostream> using namespace std; const int mod = 1e9+; long long pow(long long n,long long m)
{
long long ans = ;
while(m > )
{
if(m & )ans = (ans * n) % mod;
m = m >> ;
n = (n * n) % mod;
}
return ans;
} int main()
{
int n;
cin >>n;
cout<< ((pow(, n+)-)*pow(, mod-))%mod<<endl;
return ;
}
除法取模练习(51nod 1119 & 1013 )的更多相关文章
- 51nod 1013 3的幂的和 - 快速幂&除法取模
题目地址:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013 Konwledge Point: 快速幂:https:/ ...
- 51nod1119(除法取模)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 题意:中文题诶- 思路:这题数据比较大直接暴力肯定是不 ...
- 51nod1119(除法取模/费马小定理求组合数)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 题意:中文题诶- 思路:这题数据比较大直接暴力肯定是不 ...
- HDU 5895 Mathematician QSC(矩阵乘法+循环节降幂+除法取模小技巧+快速幂)
传送门:HDU 5895 Mathematician QSC 这是一篇很好的题解,我想讲的他基本都讲了http://blog.csdn.net/queuelovestack/article/detai ...
- Re.多项式除法/取模
前言 emmm又是暂无 前置 多项式求逆 多项式除法/取模目的 还是跟之前一样顾名思义] 给定一个多项式F(x),请求出多项式Q(x)和R(x),满足F(x)=Q(x)∗G(x)+R(x),R项数小于 ...
- hdu 3037 费马小定理+逆元除法取模+Lucas定理
组合数学推推推最后,推得要求C(n+m,m)%p 其中n,m小于10^9,p小于1^5 用Lucas定理求(Lucas定理求nm较大时的组合数) 因为p数据较小可以直接阶乘打表求逆元 求逆元时,由费马 ...
- 快速幂取模模板 && 51nod 1013 3的幂的和
#include <iostream> #include <cstdio> #include <cmath> #include <vector> #in ...
- HDU 4633 Who's Aunt Zhang ★(Polya定理 + 除法取模)
题意 用K个颜色给魔方染色,魔方只能整体旋转并且旋转重合的方案算一种,求一共有多少不同的染色方案. 思路 经典的Polya应用,记住正六面体的置换群就可以了,魔方就是每个大面变成9个小面了而已: 本题 ...
- 组合数取模Lucas定理及快速幂取模
组合数取模就是求的值,根据,和的取值范围不同,采取的方法也不一样. 下面,我们来看常见的两种取值情况(m.n在64位整数型范围内) (1) , 此时较简单,在O(n2)可承受的情况下组合数的计算可以 ...
随机推荐
- MySQL的btree索引和hash索引的区别
Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-T ...
- svg绘制圆弧
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 最近使用JQuery Easyui 碰到的几个奇怪问题
最近项目想尝试Easyui来做做前端界面,但是刚开始就碰到几个问题,记录下来,免得忘了. 1. 点击添加或修改按钮后,弹出窗体,窗体内容参加“href”属性远程加载 问题:第一次弹出窗体正常,但是再次 ...
- CSS z-index 属性
定义和用法 z-index 属性设置元素的堆叠顺序.拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面. 注释:元素可拥有负的 z-index 属性值. 注释:Z-index 仅能在定位元素上奏 ...
- 修改tomcat的端口
- [MEMO]: 机器学习教父级别的任务Jordan推荐的书籍
- win10家庭版快速升级专业版
win10家庭普通版升级专业版方法: 1.点击“开始”,选择控制面板. 2.点击“系统与安全”,选择“Windows Anytime Upgrade”.(或者:单击「开始」按钮,在搜索框中,键入any ...
- 游戏中的人工智能——初探AI
一.游戏中的人工智能 让游戏具有挑战性: 让游戏好玩的关键因素是为之找到合适的难度等级: 人工智能在游戏中的作用是通过提供富有挑战性的竞争对象来让游戏更好玩,而在游戏中行动逼真的非玩家角色(NPC), ...
- [转]Oracle 经验集
-- 转换字符串为日期格式 to_date('2011-12-30 11:54:30','yyyy-MM-dd:hh24:mi:ss') Oracel 用 C# 连接,Microsoft 自带的 Sy ...
- Java 内存区域和GC机制分析
目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...