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

题意:求LCM(C(n,0),C(n,1),C(n,2),...,C(n,n)) (LCM指的是最小公倍数)

思路:一开始想每次求两个数的最小公倍数,然后求得n个数的最小公倍数,结果发现打表打不出= =。看了别人思路,发现求的式子是一个数学公式

令a[n]=LCM(C(n,0),C(n,1),C(n,2),...,C(n,n))
b[n]=LCM(1,2,3,...,n)
a[n]=b[n+1]/(n+1)
if(n=p^k) bn=p*bn-1 else bn=bn-2 p为素数,符合要求的n如4,8,9,25

所以我们可以先把素数筛选出来,并判断1~n这些数是不是等于p^k,把a[]数组预处理出来,然后用逆元就行了。

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<string>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef long double ldb;
#define inf 99999999
#define pi acos(-1.0)
#define maxn 1000050
#define MOD 1000000007
int prime[maxn];
ll inv[maxn];
ll a[maxn];
void shake(){
int i;
inv[1]=1;
for(i=2;i<=1000000;i++){
inv[i]=(MOD-MOD/i)*inv[MOD%i]%MOD;
}
}
ll gcd(ll a,ll b){
return b ? gcd(b,a%b) : a;
}
int ok(int x)
{
int t=x,i,j;
while(t){
if(t%prime[x]==0)t/=prime[x];
else break;
}
if(t==1)return 1;
else return 0;
}
void init()
{
int i,j;
for(i=1;i<=1000000;i++)prime[i]=i;
for(i=2;i<=1000000;i++){
if(prime[i]==i){
for(j=i+i;j<=1000000;j+=i){
prime[j]=i;
}
}
}
a[1]=1;
for(i=2;i<=1000000;i++){
if(ok(i)){
a[i]=a[i-1]*prime[i]%MOD;
}
else a[i]=a[i-1];
}
}
int main()
{
int T,i,j;
ll n,m,ans,num;
shake();
init();
scanf("%d",&T);
while(T--)
{
scanf("%lld",&n);
printf("%lld\n",a[n+1]*inv[n+1]%MOD );
}
return 0;
}

hdu5407CRB and Candies (逆元+数学公式)的更多相关文章

  1. HDU 5407——CRB and Candies——————【逆元+是素数次方的数+公式】

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

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

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

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

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

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

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

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

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

  6. hdu5651 xiaoxin juju needs help (多重集的全排列+逆元)

    xiaoxin juju needs help 题意:给你一个字符串,求打乱字符后,有多少种回文串.                      (题于文末) 知识点: n个元素,其中a1,a2,··· ...

  7. hdu 5407【LCM性质】+【逆元】(结论题)

    <题目链接> <转载于 >>> > Problem Description CRB has N different candies. He is going ...

  8. HDU 6050 17多校2 Funny Function(数学+乘法逆元)

    Problem Description Function Fx,ysatisfies:For given integers N and M,calculate Fm,1 modulo 1e9+7.   ...

  9. hdu 5651 xiaoxin juju needs help 逆元 两种求解方式

    xiaoxin juju needs help Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

随机推荐

  1. 【JDBC核心】commons-dbutils

    commons-dbutils 简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC 工具类库,它是对 JDBC 的简单封装,学习成本极低,并且使用 commons-d ...

  2. 【SpringBoot1.x】SpringBoot1.x 启动配置原理 和 自定义starter

    SpringBoot1.x 启动配置原理 和 自定义starter 启动配置原理 本节源码 启动过程主要为: new SpringApplication(sources) 创建 SpringAppli ...

  3. 2019 Eclipse的下载与安装教程

    Eclipse 是一个开放源代码的.基于Java的可扩展开发平台,可以免费下载使用. 首先我们先进入这个软件的官网:https://www.eclipse.org/ 点击这个网页download下载: ...

  4. linux线程库

    linux 提供两个线程库,Linux Threads 和新的原生的POSIX线程库(NPTL),linux threads在某些情况下仍然使用,但现在的发行版已经切换到NPTL,并且大部分应用已经不 ...

  5. freopen函数总结

    函数原型: freopen(const char * __restrict__ _Filename,const char * __restrict__ _Mode,FILE * __restrict_ ...

  6. CTFHub - Web(五)

    eval执行: 1.进入网页,显示源码, <?php if (isset($_REQUEST['cmd'])) { eval($_REQUEST["cmd"]); } els ...

  7. k8s集群中遇到etcd集群故障的排查思路

    一次在k8s集群中创建实例发现etcd集群状态出现连接失败状况,导致创建实例失败.于是排查了一下原因. 问题来源 下面是etcd集群健康状态: 1 2 3 4 5 6 7 8 9 10 11 [roo ...

  8. zabbix-server安装部署配置

    zabbix-server安装部署配置 zabbixLinux安装部署安装脚本 1 一步一步部署 1.1 安装zabbix仓库源 这里安装阿里的zabbix仓库地址 选用zabbix版本3.4 rpm ...

  9. JD6621快速充电协议芯片,带有PPS 控制器的USB-PD3.0

    描述 JD6621是高度集成的USB供电(PD)控制器,支持USB PD 3.0 ,该USB PD 3.0 具有针对USBType-C下游接口(源)设计的可编程电源(PPS)规范.它监视CC引脚以检测 ...

  10. 企业项目迁移go-zero全攻略(二)

    承接上篇:上篇文章讲到 go-zero 架构设计和项目设计.本篇文章接着这个项目设计,将生成的 app 模块 中 gateway 和 RPC 进行改造.废话不多说,让我们开始! gateway ser ...