【HDOJ 5407】 CRB and Candies (大犇推导
pid=5407">【HDOJ 5407】 CRB and Candies
赛后看这题题解仅仅有满眼的迷茫………………
g(N) = LCM(C(N,0),C(N,1),...,C(N,N))
f(n)\
=\ LCM(1, 2, ..., n)f(n) = LCM(1,2,...,n),
the fact g(n)\
=\ f(n+1) / (n+1)g(n) = f(n+1)/(n+1)
f(n)\ =\ LCM(1, 2, ..., n)f(1)
= 1
If n\
=p^{k}n =pk then f(n)\
=\ f(n-1) \times \ pf(n) = f(n−1)× p,
else f(n)\
=\ f(n-1)f(n) = f(n−1).
和不断的woc…… 后来QAQ巨找到了推导的文章。
。。
恩……贴上来……
http://www.zhihu.com/question/34859879
感觉我有公式恐惧症。。
。
看到长串公式就犯晕= = 巨巨们研究研究吧…………
感觉依据题解能做出来已经非常好了
事实上这题另一点是要取余 因为须要取余 不能做除法 因此要求个分母的乘法逆元 刚好在攻数论的扩欧,扩欧小费马都能做 前一篇有扩欧的不错的帖子链接 有兴趣的能够去瞅瞅
本题代码例如以下:
#include <iostream>
#include <cstdio>
#include <cstring> using namespace std;
#define sz 1000000
#define ll long long
const int mod = 1e9+7; int p[sz+1];
ll f[sz+1]; bool ok(ll x)
{
int t = p[x];
while(x%t == 0 && x > 1) x /= t;
return x == 1;
} void Init()
{
int i,j;
for(i = 1; i <= sz; ++i) p[i] = i;
for(i = 2; i <= sz; ++i)
if(p[i] == i)
for(j = i+i; j <= sz; j += i)
if(p[j] == j) p[j] = i; f[0] = 1;
for(i = 1; i <= sz; ++i)
{
if(ok(i)) f[i] = f[i-1]*p[i]%mod;
else f[i] = f[i-1];
}
}
//扩欧
//int e_gcd(int a,int b,int &x,int &y)
//{
// if(!b)
// {
// x = 1;
// y = 0;
// return a;
// }
// ll tmp = x,ans = e_gcd(b,a%b,x,y);
// tmp = x;
// x = y;
// y = tmp - a/b*y;
// return ans;
//} ll pow(ll a,int m)
{
ll ans = 1;
for(;m; m >>= 1, a= a*a%mod)
if(m&1) ans = ans*a%mod;
return ans;
} ll cal(int a,int m)
{
//扩欧
// int x,y;
// int gcd = e_gcd(a,m,x,y);
// return (x/gcd+m)%m;
//小费马
return pow(a,m-2);
} int main()
{
Init();
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%lld\n",f[n+1]*cal(n+1,mod)%mod);
}
return 0;
}
【HDOJ 5407】 CRB and Candies (大犇推导的更多相关文章
- 数论 HDOJ 5407 CRB and Candies
题目传送门 题意:求LCM (C(N,0),C(N,1),...,C(N,N)),LCM是最小公倍数的意思,C函数是组合数. 分析:先上出题人的解题报告 好吧,数论一点都不懂,只明白f (n + 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][ ...
- 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 ...
- 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). 输出: 输出结 ...
- CRB and Candies LCM 性质
题目 CRB and Candies 题意 \[ \text{给定正整数N,求} LCM \lbrace C \left(N , 0 \right),C\left(N , 1 \right),..., ...
随机推荐
- Spark SQL Catalyst源代码分析之Analyzer
/** Spark SQL源代码分析系列文章*/ 前面几篇文章解说了Spark SQL的核心运行流程和Spark SQL的Catalyst框架的Sql Parser是如何接受用户输入sql,经过解析生 ...
- cvReadTrainData
cvReadTrainData的源代码在opencv的cvboost.cpp文件之中,详细内容例如以下所看到的: CV_BOOST_IMPL void cvReadTrainData( const c ...
- Oracle RAC 全局等待事件 gc current block busy 和 gc cr multi block request 说明--转载(http://blog.csdn.net/tianlesoftware/article/details/7777511)
一.RAC 全局等待事件说明 在RAC环境中,和全局调整缓存相关的最常见的等待事件是global cache cr request,global cache busy和equeue. 当一个进程访问需 ...
- wamp openssl
在这一章节里, 我记录了一下如何在 wamp 环境下配置 ssl 前提条件 在设置 Apache + SSL 之前, 需要确认 Apache 已经安装并可以正常工作. 并且 ssl 需要的文件在如下的 ...
- mysql_udf_http(根据mysql表自动触发发送http请求)
下载 tar包wget http://mysql-udf-http.googlecode.com/files/mysql-udf-http-1.0.tar.gz解压tar -vzxf mysql-ud ...
- No changes detected or App 'blog' could not be found. Is it in INSTALLED_APPS?
出现该问题的原因: django没有在setting.py的配置文件中找到app内容,需要增加app的名称 E:\PycharmProjects\Mysite>python manage.py ...
- 剑指offer——04重建二叉树(Python3)
思路:在数据结构中,有一个条件反射,谈及二叉树,就递归.所以在实现重建二叉树时,也应该用到递归的思想. 在前序遍历中,根节点处于第一个:在中序遍历中,根节点的左边为左子树节点,根节点右边为右子树节点. ...
- redux原理
Redux实现原理 不同组件需要依赖同一个数据的时候,就需要状态提升至这些组件的根组件. redux是状态统一管理工具,需要使用它的原因是: 组件之间通信统一管理,方便代码维护. React中有一个特 ...
- 立即执行函数与Function
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 与new Function()区别? new Function() 还是有区别的,fn = ne ...
- 错误:com.android.builder.packaging.DuplicateFileException: Duplicate files copied
File2: C:\Users\guoxw\.gradle\caches\modules-2\files-2.1\org.jsoup\jsoup\1.10.3\b842f960942503cf1abb ...