hdu 5407
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5407
题意:给定一个数n,求LCM(C(n,0),C(n,1),C(n,2)...,C(n,n))
根据官方题解,g(n) = LCM(C(n,0),C(n,1),C(n,2)...,C(n,n))
g(n) = f(n+1)/(n+1)
而 f(n) = LCM(1,2,3,...,n)
对于f(n)中的每一个数,对LCM的贡献值并不一样,可以想一下,对n进行因式分解,n = p1^x1*p2^x2*...+pt*xt;比n小的数中必然有p1^x1,p2^x2...
所以,只有当n可以分解为n=p^x的时候,才对LCM值有贡献。
#include<iostream>
#include<cstdio>
#include<cstring>
typedef long long LL;
using namespace std;
;
;
];
int ans[MAXN];
int fra[MAXN];
// 打印素数表
bool notprime[MAXN];//值为false表示素数,值为true表示非素数
void init1()
{
memset(notprime,false,sizeof(notprime));
notprime[]=notprime[]=true;
;i<MAXN;i++)
if(!notprime[i])
{
if(i>MAXN/i)continue;//防止后面i*i溢出(或者i,j用long long)
//直接从i*i开始就可以,小于i倍的已经筛选过了,注意是j+=i
for(int j=i*i;j<MAXN;j+=i)
notprime[j]=true;
}
}
void getPrime()
{
memset(prime,,sizeof (prime));
;i<=MAXN;i++)
{
]]=i;
;j<=prime[]&&prime[j]<=MAXN/i;j++)
{
prime[prime[j]*i]=;
) break;
}
}
}
// 求逆元
long long inv(long long a,long long mod)
{
);
return inv(mod%a,mod)*(mod-mod/a)%mod;
}
void init2(){
ans[] = ;
int i, j;
; i < MAXN; i++){
;
bool flag = false;
; prime[j]*prime[j]<= i+; ++j){
){
tmp /= prime[j];
flag = true;
}
if(flag)
break;
}
){
ans[i] = 1LL*ans[i-]*i%mod*prime[j]%mod*inv((i+),mod)%mod;
}
]){
ans[i] = 1LL*ans[i-]*i%mod*(i+)%mod*inv((i+),mod)%mod;
}
else{
ans[i] = 1LL*ans[i-]*i%mod*inv((i+),mod)%mod;
}
}
}
int main(){
getPrime();
init1();
init2();
int T, N;
scanf("%d",&T);
while(T--){
scanf("%d",&N);
printf("%d\n",ans[N]);
}
;
}
hdu 5407的更多相关文章
- HDU 5407(2015多校10)-CRB and Candies(组合数最小公倍数+乘法逆元)
题目地址:pid=5407">HDU 5407 题意:CRB有n颗不同的糖果,如今他要吃掉k颗(0<=k<=n),问k取0~n的方案数的最小公倍数是多少. 思路:首先做这道 ...
- 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(LCM +最大素因子求逆元)
[题目链接]pid=5407">click here~~ [题目大意]求LCM(Cn0,Cn1,Cn2....Cnn)%MOD 的值 [思路]来图更直观: 这个究竟是怎样推出的.说实话 ...
- 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). 输出: 输出结 ...
- hdu 5407【LCM性质】+【逆元】(结论题)
<题目链接> <转载于 >>> > Problem Description CRB has N different candies. He is going ...
- hdu 5407(LCM好题+逆元)
CRB and Candies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- HDU 5407——CRB and Candies——————【逆元+是素数次方的数+公式】
CRB and Candies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
随机推荐
- hadoop NameNode 实现分析
在hadoop 整体分析中,说过nameNode主要是实现一个 blockID 到对应 dataNode的对应关系映射. 现在分析一下腰实现这个映射,nameNode还需要哪些模块. 1 为了方便用户 ...
- POJ 2125 Destroying The Graph (二分图最小点权覆盖集+输出最小割方案)
题意 有一个图, 两种操作,一种是删除某点的所有出边,一种是删除某点的所有入边,各个点的不同操作分别有一个花费,现在我们想把这个图的边都删除掉,需要的最小花费是多少. 思路 很明显的二分图最小点权覆盖 ...
- ecshop 在首页每个商品下显示已销售数量
1.在includes/lib_goods.php文件末尾加入以下代码 function get_buy_sum($goods_id) { $sql = "select sum(goods_ ...
- ecshop 多语言切换
1.打开includes/init.php找到下面两行代码并删除 require(ROOT_PATH . 'languages/' . $_CFG['lang'] . '/common.php'); ...
- aspose.Cells 导出Excel
aspose aspse.Cells可以操作Excel,且不依赖于系统环境. 使用模板,通过绑定输出数据源 这种适合于对格式没有特别要求的,直接绑定数据源即可.和数据绑定控件差不多. Workbook ...
- new tips
老外的一篇文章(原文地址http://stackoverflow.com/questions/6647677/tips-for-efficient-as3-coding),有这么一段描述: Use [ ...
- yeoman的学习
官网地址:http://yeoman.io/ 什么是yeoman? 在上一篇博客已粗劣地提到yeoman的安装和验证.说白了,其实yeoman是生成代码和搭建框架的前端自动化工具.为了做到这些,yeo ...
- 最全的PHP开发Android应用程序
第一部分是指在Android系统的手机上直接写PHP脚本代码并立即运行: 第二部分则继续讲解如何把写好的PHP脚本代码打包成akp安装文件. 首先,在手机上安装两个apk包. 一个是SL4A(Scri ...
- Android Service 服务
一. Service简介 Service是android 系统中的四大组件之一(Activity.Service.BroadcastReceiver.ContentProvider),它跟Activi ...
- Net判断一个对象是否为数值类型 z
http://www.cnblogs.com/SkyD/p/4053461.html public static bool IsNumeric(this Type dataType) { if (da ...