CRB and Candies

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 722    Accepted Submission(s): 361

Problem Description
CRB has N different candies. He is going to eat K candies.
He wonders how many combinations he can select.
Can you answer his question for all K(0 ≤ K ≤ N)?
CRB is too hungry to check all of your answers one by one, so he only asks least common multiple(LCM) of all answers.
 
Input
There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case there is one line containing a single integer N.
1 ≤ T ≤ 300
1 ≤ N ≤ 106
 
Output
For each test case, output a single integer – LCM modulo 1000000007(109+7).
 
Sample Input
5
1
2
3
4
5
 
Sample Output
1
2
3
12
10
 
Author
KUT(DPRK)
 
Source

题目大意:让你求LCM(C(n,0),C(n,1),C(n,2)...C(n,n-1),C(n,n)),最后结果取模。

解题思路:其实只要有公式了,问题就很好解决了。f(n)是求1 - n的最小公倍数。这个是可以借鉴得。如果n是一个素数p的k次方,那么就乘以素数p。主要需要求逆元,和快速判断x是否为素数p的k次方。

#include<bits/stdc++.h>
using namespace std;
typedef long long INT;
const int maxn=1e6+20;
const INT MOD=1e9+7;
INT f[maxn],g[maxn],inv[maxn];
int p[maxn];
void init(){
for(int i=1;i<maxn;i++){
p[i]=i;
}
for(int i=2;i<maxn;i++){
if(p[i]==i){
for(int j=i+i;j<maxn;j+=i){
p[j]=i;
}
}
}
}
bool check(int x){
int d=p[x];
if(x>1){
while(x%d==0){
x/=d;
}
return x==1;
}
return false;
}
void get_f(){
f[1]=1;
for(int i=2;i<maxn;i++){
if(check(i)){
f[i]=f[i-1]*p[i]%MOD;
}else{
f[i]=f[i-1];
}
}
}
INT Powmod(INT a,INT n){
a%=MOD;
INT ret=1;
while(n){
if(n&1)
ret= ret * a % MOD;
n>>=1;
a = (a*a)%MOD;
}
return ret;
}
INT get_inv(int n){
return Powmod((INT)n,MOD-2);
}
INT get_g(int n){
return f[n+1]*get_inv(n+1)%MOD;
}
int main(){
int t,n;
init();
get_f();
scanf("%d",&t);
while(t--){
scanf("%d",&n);
INT ans=get_g(n);
printf("%lld\n",ans);
}
return 0;
}

  

HDU 5407——CRB and Candies——————【逆元+是素数次方的数+公式】的更多相关文章

  1. Hdu 5407 CRB and Candies (找规律)

    题目链接: Hdu 5407 CRB and Candies 题目描述: 给出一个数n,求lcm(C(n,0),C[n,1],C[n-2]......C[n][n-2],C[n][n-1],C[n][ ...

  2. 2015 Multi-University Training Contest 10 hdu 5407 CRB and Candies

    CRB and Candies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  3. hdu 5407 CRB and Candies(组合数+最小公倍数+素数表+逆元)2015 Multi-University Training Contest 10

    题意: 输入n,求c(n,0)到c(n,n)的所有组合数的最小公倍数. 输入: 首行输入整数t,表示共有t组测试样例. 每组测试样例包含一个正整数n(1<=n<=1e6). 输出: 输出结 ...

  4. HDU 5407 CRB and Candies(LCM +最大素因子求逆元)

    [题目链接]pid=5407">click here~~ [题目大意]求LCM(Cn0,Cn1,Cn2....Cnn)%MOD 的值 [思路]来图更直观: 这个究竟是怎样推出的.说实话 ...

  5. LCM性质 + 组合数 - HDU 5407 CRB and Candies

    CRB and Candies Problem's Link Mean: 给定一个数n,求LCM(C(n,0),C(n,1),C(n,2)...C(n,n))的值,(n<=1e6). analy ...

  6. HDU 5407 CRB and Candies

    题意:给一个正整数k,求lcm((k, 0), (k, 1), ..., (k, k)) 解法:在oeis上查了这个序列,得知答案即为lcm(1, 2, ..., k + 1) / (k + 1),而 ...

  7. hdu 5407(LCM好题+逆元)

    CRB and Candies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  8. 数论 HDOJ 5407 CRB and Candies

    题目传送门 题意:求LCM (C(N,0),C(N,1),...,C(N,N)),LCM是最小公倍数的意思,C函数是组合数. 分析:先上出题人的解题报告 好吧,数论一点都不懂,只明白f (n + 1) ...

  9. HDU 5407(2015多校10)-CRB and Candies(组合数最小公倍数+乘法逆元)

    题目地址:pid=5407">HDU 5407 题意:CRB有n颗不同的糖果,如今他要吃掉k颗(0<=k<=n),问k取0~n的方案数的最小公倍数是多少. 思路:首先做这道 ...

随机推荐

  1. python3如何打印进度条

    Python3 中打印进度条(#)信息: 代码: import sys,time for i in range(50): sys.stdout.write("#") sys.std ...

  2. [Emacs] Org-mode下表格内中英文不对齐的解决方案

    ;; Setting for English font (set-default-font "monospace-15") ;; Setting for Chinese font ...

  3. SpringMvc文件上传(内部框架版 配置无需考虑 只考虑上传部分)-

    -此版本有一不足:自定义文件路径必须存在,不会自动创建 ,详看how2J

  4. Crontab 驱动 Scrapy 定时任务

    做了个爬虫去定时抓自己发布在cnblogs更新的文章,考虑用corntab定时任务驱动 crontab 任务配置 crontab配置规则就不啰嗦了,网上很多介绍,规则很容易功能却很强大. 然后我发现只 ...

  5. sql_trace基本用法

    sql_trace是oracle提供的一个非常好的跟踪工具,主要用来检查数据库的异常情况,通过跟踪数据库的活动,找到有问题的语句. 一.概述:    SQL_TRACE是Oracle的一个非常强大的工 ...

  6. P3398 仓鼠找sugar 树上路径相交判断

    \(\color{#0066ff}{题目描述}\) 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐 ...

  7. Gym - 101845K 排序+概率

    The UNAL programming coaches have lost a bet, they bet the 6 UNAL teams would occupy the first six p ...

  8. 禁止百度转码和百度快照缓存的META声明

    今天手机 site 中国博客联盟时,发现网被转码了,虽然这个网站没做移动站,但是我也不希望被百度转码,因为这相当于拦截了所有来自手机的流量.下面说一下禁止百度转码和禁止百度快照缓存的方法. 一.禁止百 ...

  9. pytorch 迁移学习[摘自官网]

    迁移学习包含两种:微调和特征提取器. 微调:对整个网络进行训练,更新所有参数 特征提取器:只对最后的输出层训练,其他层的权重保持不变 当然,二者的共性就是需要加载训练好的权重,比如在ImageNet上 ...

  10. 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_类型的各种成员

    [Class中,可能包含的成员] 常量, 字段, 实例构造器, 类型构造器, 方法, 操作符重载, 转换操作符, 属性, 事件, 类型(Class)