题目地址:

pid=5407">HDU 5407

题意:CRB有n颗不同的糖果,如今他要吃掉k颗(0<=k<=n),问k取0~n的方案数的最小公倍数是多少。

思路:首先做这道题我们须要必备的几个技能点。

1. LCM(C(n,0), C(n,1),…, C(n,n))=LCM(1,2,3,…n+1)/(n+1)。额,这个有一篇证明Kummer定理

2.(1) 乘法逆元定义

满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元(a,p互质)。

(2)为什么要用乘法逆元

当我们要求(a/b) mod p的值,且a非常大,无法直接求得a/b的值时,我们就要用到乘法逆元。我们能够通过求b关于p的乘法逆元k,将a乘上k再模p。即(a*k) mod p。其结果与(a/b) mod p等价。

(3)乘法逆元的解法

A:逆元能够用扩展欧几里德来解最小的正整数就可以:

a*x%p = 1;

a*x = y*p + 1;

a*x -p*y = 1;

B当p是质数的时候 a/x mod p=a*x^(p-2) mod p

证明:若 a*b mod p = 1 则a和b互为乘法逆元。

由于p是质数。所以由费马小定理得出x^(p-1) mod p = 1 ,所以x*x^(p-2) mod p = 1是成立的,所以x 和 x^(p-2) 互为乘法逆元。

当p不是质数的时候a/x mod p=a*x^(phi(p)-1) mod p

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <map>
#include <bitset>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
typedef long long LL;
const int inf=0x3f3f3f3f;
const double pi= acos(-1.0);
const double esp=1e-7;
const int Maxn=1e6+10;
const int mod=1000000007;
bitset<Maxn>pri;
int prime[Maxn];
int vis[Maxn];
int k;
LL x;
LL f[Maxn];
void is_prime()
{
pri.set();
for(int i=2;i<Maxn;i++){
if(pri[i]){
prime[k++]=i;
for(int j=i+i;j<Maxn;j+=i)
pri[j]=0;
}
}
}
LL Mul(LL a,LL b,LL mod)
{
LL res=0;
while(b>0) {
if(b&1)
res=(res+a)%mod;
b>>=1;
a=(a+a)%mod;
}
return res;
}
LL modxp(LL a,LL b,LL mod)
{
LL res=1;
while(b>0) {
if(b&1)
res=Mul(res,a,mod);
b>>=1;
a=Mul(a,a,mod);
}
return res;
}
void get()
{
memset(vis,0,sizeof(vis));
for(int i=0;i<k;i++){//将素数p的k次方p^k标记一下,找出符合的素数
x=prime[i];
while(x<Maxn){
vis[x]=prime[i];
x*=prime[i];
}
}
f[1]=1;
for(int i=2;i<Maxn;i++){
if(vis[i])
f[i]=(f[i-1]*vis[i])%mod;
else
f[i]=f[i-1]%mod;
}
}
int main()
{
int T,n;
is_prime();
get();
scanf("%d",&T);
while(T--){
scanf("%d",&n);
printf("%lld\n",f[n+1]*modxp(n+1,mod-2,mod)%mod);//(f(n+1)/(n+1))%mod
}
return 0;
}

HDU 5407(2015多校10)-CRB and Candies(组合数最小公倍数+乘法逆元)的更多相关文章

  1. HDU 5410(2015多校10)-CRB and His Birthday(全然背包)

    题目地址:HDU 5410 题意:有M元钱,N种礼物,若第i种礼物买x件的话.会有Ai*x+Bi颗糖果,现给出每种礼物的单位价格.Ai值与Bi值.问最多能拿到多少颗糖果. 思路:全然背包问题. dp[ ...

  2. hdu 5288||2015多校联合第一场1001题

    pid=5288">http://acm.hdu.edu.cn/showproblem.php?pid=5288 Problem Description OO has got a ar ...

  3. CRB and Candies(组合数学+求逆元+lcm)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5407 题目: Problem Description CRB has N different cand ...

  4. hdu5414(2015多校10)--CRB and String(字符串匹配)

    题目链接:pid=5414">点击打开链接 题目大意:有A.B两个字符串.如今有一种操作能够在A的随意一个字符x后面添加一个字符y(x.=y).问能不能将A变为B. 首先假设A能够变成 ...

  5. HDU 5358(2015多校联合训练赛第六场1006) First One (区间合并+常数优化)

    pid=5358">HDU 5358 题意: 求∑​i=1​n​​∑​j=i​n​​(⌊log​2​​S(i,j)⌋+1)∗(i+j). 思路: S(i,j) < 10^10 & ...

  6. HDU 5373(2015多校7)-The shortest problem(模拟%11)

    题目地址:pid=5373">HDU 5373 题意:给你一个数n和操作次数t,每次操作将n的各位数之和求出来放在n的末尾形成新的n,问t次操作后得到的n能否够被11整除. 思路:就是 ...

  7. HDU 5326(2015多校3)-Work(dfs)

    题目地址:pid=5326">HDU 5326 题意:给一张有向图n个点.n - 1(....输入n-1)条边. A指向B代表A管理B.然后能够间接管理,比方A管理B,B管理C.则A管 ...

  8. hdu 5361 2015多校联合训练赛#6 最短路

    In Touch Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total ...

  9. HDU 5371(2015多校7)-Hotaru&#39;s problem(Manacher算法求回文串)

    题目地址:HDU 5371 题意:给你一个具有n个元素的整数序列,问你是否存在这样一个子序列.该子序列分为三部分,第一部分与第三部分同样,第一部分与第二部分对称.假设存在求最长的符合这样的条件的序列. ...

随机推荐

  1. Ubuntu-16.04安装Xdebug-2.2.5及相关介绍

    Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况.在日常开发中,我们会使用如 print_r() var_dump()等函数来进行调 ...

  2. (七)MySQL数据操作DQL:多表查询2

    (1)准备环境 1)创建员工表 mysql> create table company.employee6( -> emp_id int auto_increment primary ke ...

  3. set注入

    顾名思义set注入必须要有set方法. 基本类型的注入.引用类型注入.List注入.Set注入.Map注入.Properties注入 public class person { private car ...

  4. Vue 不使用Vuex的情况下进行状态管理

    在封装自己的Vue ui库的时候,往往要封装一些比较复杂的组件,比如说table,form之类.这些组件由于功能繁杂,还涉及到子组件嵌套及通信,如果没有一套状态管理方案的话很容易导致代码难以阅读.难以 ...

  5. [php] 解析JSON字符串

    $json_str = '{"thumb":"","photo":[{"url":"557a3d2184db0 ...

  6. hdu5514

    hdu5514 题意 \(m\) 个石子绕成一圈,编号\([0, m - 1]\).有 \(n\) 个青蛙从 \(0\) 号石子出发,给出每个青蛙的步长,青蛙无限跑圈.问哪些石子至少被一个青蛙经过,求 ...

  7. 【权值分块】bzoj3224 Tyvj 1728 普通平衡树

    权值分块和权值线段树的思想一致,离散化之后可以代替平衡树的部分功能. 部分操作的时间复杂度: 插入 删除 全局排名 全局K大 前驱 后继 全局最值 按值域删除元素 O(1) O(1) O(sqrt(n ...

  8. 【数论】【枚举约数】【欧拉函数】bzoj2705 [SDOI2012]Longge的问题

    ∵∑gcd(i, N)(1<=i <=N) =k1*s(f1)+k2*s(k2)+...+km*s(km) {ki是N的约数,s(ki)是满足gcd(x,N)=ki(1<=x< ...

  9. [CF321C]Ciel the Commander

    题目大意: 给你一棵n个结点的树,给每个结点分级,最高为'A',最低为'Z'. 尝试构造一种分级方案,使得任意两个相同级别的结点路径上至少有一个更高级的结点. 思路: 贪心+树上点分. 递归处理每一棵 ...

  10. 1.1(Spring学习笔记)Spring-事务基础

    一.Spring 事务 Spring提供对事务支持的核心包是spring-tx-4.3.6.RELEASE包. 该包类有三个核心接口,提供对事务的支持: 1.1PlatformTransactionM ...