hiho1804 - 整数分解、组合数、乘法逆元
题目叙述很啰嗦,可以简化为:n个球[1-1e5],放到m个不同的桶里,一共多少种不同的放法。【桶里可以不放】
------------------------------------------------------------------------------------------------
解C(n+m-1, m-1)
由于m,n可能很大,所以需要用逆元。扩展欧几里得。
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <cmath>
#include <vector>
#include <string>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
typedef long long LL;
using namespace std;
const int N = ;
LL MOD = 1e9 + ;
LL F[N], Inv[N]; LL exgcd(LL a, LL b, LL& x, LL& y){
if (b == ){
x = , y = ; return a;
}
else{
auto gcd = exgcd(b, a%b, y, x);
y -= (a / b) * x;
return gcd;
}
} int main(){
LL n, k; cin >> n >> k;
int left = n - k, last = MOD, seg = ;
n += MOD;
for (int i = ; i < left; ++i){
int val; scanf("%d", &val);
if (val>last){
last = val;
}
else{
++seg;
n -= last;
last = val;
}
} n -= last; if (n < ){
puts("No");
}
else{
F[] = ; for (int i = ; i < N; ++i){
F[i] = (i * F[i - ]) % MOD;
}
LL nouse; exgcd(F[N - ], MOD, Inv[N-], nouse);
while (Inv[N - ] < ) Inv[N - ] += MOD; for (int i = N - ; i; --i){
Inv[i] = (Inv[i + ] * (i + )) % MOD;
} std::cout << (F[n + seg - ] * Inv[n]) % MOD*Inv[seg - ] % MOD << std::endl;
//C(n+seg-1,seg-1);
}
}
hiho1804 - 整数分解、组合数、乘法逆元的更多相关文章
- hdu5698瞬间移动-(杨辉三角+组合数+乘法逆元)
瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- (light oj 1102) Problem Makes Problem (组合数 + 乘法逆元)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1102 As I am fond of making easier problems, ...
- CodeForces 300C Beautiful Numbers(乘法逆元/费马小定理+组合数公式+高速幂)
C. Beautiful Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- 【板子】gcd、exgcd、乘法逆元、快速幂、快速乘、筛素数、快速求逆元、组合数
1.gcd int gcd(int a,int b){ return b?gcd(b,a%b):a; } 2.扩展gcd )extend great common divisor ll exgcd(l ...
- 【数论】【组合数】【快速幂】【乘法逆元】洛谷 P2265 路边的水沟
从左上角到右下角,共经过n+m个节点,从其中选择n各节点向右(或者m各节点向下),所以答案就是C(n+m,n)或者C(n+m,m),组合数暴力算即可,但是要取模,所以用了乘法逆元. #include& ...
- 题解报告:hdu 1576 A/B(exgcd、乘法逆元+整数快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1576 Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n ...
- HDU 5407(2015多校10)-CRB and Candies(组合数最小公倍数+乘法逆元)
题目地址:pid=5407">HDU 5407 题意:CRB有n颗不同的糖果,如今他要吃掉k颗(0<=k<=n),问k取0~n的方案数的最小公倍数是多少. 思路:首先做这道 ...
- 【模板】求1~n的整数的乘法逆元
洛谷3811 先用n!p-2求出n!的乘法逆元 因为有(i-1)!-1=i!-1*i (mod p),于是我们可以O(n)求出i!-1 再用i!-1*(i-1)!=i-1 (mod p)即是答案 #i ...
- HDU 1452 (约数和+乘法逆元)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1452 题目大意:求2004^X所有约数和,结果mod 29. 解题思路: ①整数唯一分解定理: 一个 ...
随机推荐
- PAT_A1128#N Queens Puzzle
Source: PAT A1128 N Queens Puzzle (20 分) Description: The "eight queens puzzle" is the pro ...
- Qt Quick编程(1)
说道QML,不得不先说一下ECMAScript: ECMAScript语言的标准是由Netscape.Sun.微软.Borland等公司基于JavaScript和JScript锤炼.定义出来的. EC ...
- Git 基础教程 之 Bug分支和Stash
在Git中,每个Bug都可以通过一个新的临时分支修复,修复后,合并分支,然后删除. ① 当接到一个Bug任务时,但dev上进行的工作还没有提交时: ② git stash 把现场工作“储藏 ...
- PAT 1088. Rational Arithmetic
For two rational numbers, your task is to implement the basic arithmetics, that is, to calculate the ...
- 【hihocoder 1511】树的方差
[题目链接]:http://hihocoder.com/problemset/problem/1511 [题意] [题解] 有个方差的公式 V(X)=E(X2)−E(X)2 这里E(X)指的是X的期望 ...
- Balanced Number
Balanced Number Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- (34)Spring Boot的启动器Starter详解【从零开始学Spring Boot】
Spring Boot应用启动器基本的一共有N(现知道的是44)种:具体如下: 1)spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. 2 ...
- Ubuntu下ss的安装与使用
不得不说,linux真的有种让人用上就爱上的魔力,正好最近Ubuntu出了16.04,便索性装了个win10+Ubuntu的双系统,也算是告慰那永远留在老硬盘里的虚拟机吧. 言归正传,换上Ubuntu ...
- COGS——C610. 数对的个数
http://cogs.pro/cogs/problem/problem.php?pid=610 Description出题是一件痛苦的事情!题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B P ...
- HDU 1466
经典DP,这样的递推确实有点难. 把所有直线分成两组,可以知道 m条直线的交点方案数 =(m-r)条平行线与r条直线交叉的交点数 + r条直线本身的交点方案 亦就是 =(m-r)*r+r条之间本身 ...