HDU 5407 CRB and Candies(LCM +最大素因子求逆元)
【题目链接】 pid=5407">click here~~
【题目大意】求LCM(Cn0,Cn1,Cn2....Cnn)%MOD 的值
【思路】来图更直观:
这个究竟是怎样推出的。说实话。本人数学归纳大法没有推出来,幸得一个大神给定愿文具体证明。点击这里:click here~~
代码:
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
const int MOD=1e9+7;
typedef long long LL;
LL p[N];
LL arr[N];
bool ok(int n) //推断n是不是仅仅有一个质因子。p[n]表示n最大的质因子。 {
int t=p[n];
while(n%t==0&&n>1) n/=t;
return n==1;
}
LL poww(LL a,LL b)
{
LL res=a,ans=1;
while(b)
{
if(b&1) ans=res*ans%MOD;
res=res*res%MOD;
b>>=1;
}
return ans;
}
LL niyuan(LL a) /// 求逆元
{
return poww(a,MOD-2);
}
inline LL read()
{
int c=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){c=c*10+ch-'0';ch=getchar();}
return c*f;
}
void init()
{
for(int i=1; i<N; ++i) p[i]=i;
for(int i=2; i<N; ++i) if(p[i]==i)
{
for(int j=i+i; j<N; j+=i)
p[j]=i;
}
arr[0]=1;
for(int i=1; i<N; ++i)//求LCM
{
if(ok(i))
arr[i]=arr[i-1]*p[i]%MOD;
else arr[i]=arr[i-1];
}
}
int main()
{
init();
int t;t=read();
while(t--)
{
int n;n=read();
LL ans=arr[n+1]*niyuan(n+1)%MOD;//由欧拉定理a^(p-1) mod p = 1 p是质数 所以a的逆元是a^{p-2}
printf("%lld\n",ans);
} return 0;
}
HDU 5407 CRB and Candies(LCM +最大素因子求逆元)的更多相关文章
- 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][ ...
- HDU 5407——CRB and Candies——————【逆元+是素数次方的数+公式】
CRB and Candies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- 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 ...
- 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 ...
- HDU 5407 CRB and Candies
题意:给一个正整数k,求lcm((k, 0), (k, 1), ..., (k, k)) 解法:在oeis上查了这个序列,得知答案即为lcm(1, 2, ..., k + 1) / (k + 1),而 ...
- hdu 5407 CRB and Candies(组合数+最小公倍数+素数表+逆元)2015 Multi-University Training Contest 10
题意: 输入n,求c(n,0)到c(n,n)的所有组合数的最小公倍数. 输入: 首行输入整数t,表示共有t组测试样例. 每组测试样例包含一个正整数n(1<=n<=1e6). 输出: 输出结 ...
- CRB and Candies LCM 性质
题目 CRB and Candies 题意 \[ \text{给定正整数N,求} LCM \lbrace C \left(N , 0 \right),C\left(N , 1 \right),..., ...
- 数论 HDOJ 5407 CRB and Candies
题目传送门 题意:求LCM (C(N,0),C(N,1),...,C(N,N)),LCM是最小公倍数的意思,C函数是组合数. 分析:先上出题人的解题报告 好吧,数论一点都不懂,只明白f (n + 1) ...
- HDU 5407(2015多校10)-CRB and Candies(组合数最小公倍数+乘法逆元)
题目地址:pid=5407">HDU 5407 题意:CRB有n颗不同的糖果,如今他要吃掉k颗(0<=k<=n),问k取0~n的方案数的最小公倍数是多少. 思路:首先做这道 ...
随机推荐
- CE工具里自带的学习工具--第一关
点击[下一步],进入第二关
- Myeclipse下载
地址:http://www.jb51.net/softs/593889.html#download
- Mysql:零散记录
limit用法 查询第4行记录 select * from tablename limit 3,1; limit 3,1:截取第3行加1行的数据 查询第6-15行 select * from tabl ...
- Mongo索引学习笔记
索引使用场景 优:加快查询速度 劣:增删改会产生额外的开销.占用空间 tips: 返回集合中一半以上的数据,全表扫描的效率高 索引基础 基础操作 查看索引:db.test.getIndexes() 创 ...
- 第一节:python提取PDF文档中的图片
由于项目需要将PDF文档当中的图片转换成图片,所以参考了这篇文章https://blog.csdn.net/qq_15969343/article/details/81673302后项目得以解决. 1 ...
- 将文件大小kb转换成M
得到文件的大小的一般是直接到得到的是文件的字节大小,也就是kb,我们有的时候需要做单位换算成B或者M, 下面方法只是换成M,没有到G, 有更好的方法,请随时沟通,以便交流学习,谢谢. public s ...
- jQuery实现上传进度条效果
效果:(点击上传按钮) See the Pen pjGNJr by moyu (@MoYu1991) on CodePen. html代码: <!DOCTYPE html> <h ...
- word 给段落添加背景色
word 2007 单击"页面布局"选项卡->单击"页面背景"一栏中的"页面边框"->(弹出边框与底纹对话框)->点击底纹 ...
- git-svn操作
1.git svn clone --username=chenzheng http://10.0.0.178/repos/trunk/hxqcgf/auto_accessories.admin.h ...
- C语言学习<输入输出函数,函数的调用>
#include <stdio.h> /* 输入输出函数的学习 函数的调用 2017.05.25 soulsjie */ //输入连个数字求最大值 void main(){ int Max ...