BZOJ 1951 古代猪文
快速幂+枚举质因数+欧拉定理+lucas定理+CRT。
注意两点:
1.if (n<m) C(n,m)=0.
2.这里0^0时应该return 0.
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define mod 999911659
#define mod2 999911658
#define maxn 40050
using namespace std;
long long g,n,p[]={,,,,},a[],inv1[maxn],inv2[maxn];
long long f_pow(long long x,long long y,long long mods)
{
x%=mods;
if ((!x) && (!y)) return ;
long long ans=,base=x;
while (y)
{
if (y&) ans=(ans*base)%mods;
base=(base*base)%mods;
y>>=;
}
return ans;
}
void get_table(long long x)
{
inv1[]=inv2[]=;
for (long long i=;i<=p[x]-;i++)
{
inv1[i]=inv1[i-]*i%p[x];
inv2[i]=f_pow(inv1[i],p[x]-,p[x]);
}
}
long long comb(long long n,long long m,long long type)
{
if (n<m) return ;
return inv1[n]*inv2[m]%p[type]*inv2[n-m]%p[type];
}
long long lucas(long long n,long long m,long long type)
{
if (!m) return ;long long ret=comb(n%p[type],m%p[type],type);
return comb(n%p[type],m%p[type],type)*lucas(n/p[type],m/p[type],type)%p[type];
}
long long combines()
{
long long ret=;
for (long long i=;i<=;i++)
ret=(ret+a[i]*(mod2/p[i])%mod2*f_pow(mod2/p[i],p[i]-,p[i])%mod2)%mod2;
return ret;
}
long long ask()
{
for (long long i=;i<=;i++)
{
get_table(i);long long top=(long long)(sqrt(n)+0.5);
for (long long j=;j<=top;j++)
{
if (!(n%j))
{
a[i]=(a[i]+lucas(n,j,i))%p[i];
if (j*j!=n) a[i]=(a[i]+lucas(n,n/j,i))%p[i];
}
}
}
return combines();
}
int main()
{
scanf("%lld%lld",&n,&g);
printf("%lld\n",f_pow(g,ask(),mod));
return ;
}
BZOJ 1951 古代猪文的更多相关文章
- BZOJ 1951SDOI2010 古代猪文
真是到很强的数学题 先利用欧拉定理A^B %p=A^(B%φ(p)+φ(p) ) %p 然后利用卢卡斯定理求出在modφ(p)的几个约数下的解 再利用中国剩余定理合并 计算答案即可 By:大奕哥 #i ...
- BZOJ 1951: [Sdoi2010]古代猪文( 数论 )
显然答案是G^∑C(d,N)(d|N).O(N^0.5)枚举N的约数.取模的数999911659是质数, 考虑欧拉定理a^phi(p)=1(mod p)(a与p互质), 那么a^t mod p = a ...
- BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]
1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2194 Solved: 919[Submit][Status] ...
- BZOJ 1951 【SDOI2010】 古代猪文
题目链接:古代猪文 好久没写博客了,这次就先写一篇吧…… 题面好鬼……概括起来就是:给出\(N,G(\leqslant 10^9)\),求:\[G^{\sum_{d|n}\binom{n}{d}} \ ...
- 古代猪文 BZOJ 1951
古代猪文 [问题描述] “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...
- 1951: [Sdoi2010]古代猪文
1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2171 Solved: 904[Submit][Status] ...
- BZOJ-1951 古代猪文 (组合数取模Lucas+中国剩余定理+拓展欧几里得+快速幂)
数论神题了吧算是 1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1573 Solved: 650 [Submit ...
- 【BZOJ1951】[SDOI2010]古代猪文
[BZOJ1951][SDOI2010]古代猪文 题面 bzoj 洛谷 题解 题目实际上是要求 $ G^{\sum d|n\;C_n^d}\;mod \; 999911659 $ 而这个奇怪的模数实际 ...
- 【BZOJ1951】古代猪文(CRT,卢卡斯定理)
[BZOJ1951]古代猪文(CRT,卢卡斯定理) 题面 BZOJ 洛谷 题解 要求什么很显然吧... \[Ans=G^{\sum_{k|N}{C_N^k}}\] 给定的模数是一个质数,要求解的东西相 ...
随机推荐
- LINUX&UNIX 安装vmware workstation10和centOS6
大一下时,学习了linux&unix这门课程,全字符的操作,我对它并不是很感冒,不过,还是找学长安装过虚拟机和Linux系统,在考前利用它和putty进行复习.现在重装系统之后,各类软件,自然 ...
- 20150206读书笔记<深入理解计算机系统>
●第一章 C是系统级编程的首选.C++显示支持抽象,属于应用级程序设计语言. 简单例子: 一个典型系统的硬件组成: 存储器的层次结构: 注:存储器层次结构的设计思想是,该层存储器作为下一层存储器的高速 ...
- Linux sed命令实例详解
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
- 聚类算法:ISODATA算法
1. 与K-均值算法的比较 –K-均值算法通常适合于分类数目已知的聚类,而ISODATA算法则更加灵活: –从算法角度看, ISODATA算法与K-均值算法相似,聚类中心都是通过样本均值的迭代运算来决 ...
- 转载:javascript面向对象编程:非构造函数的继承
一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". var Chinese = { nation:'中国' }; 还有一个对象,叫做&qu ...
- fill_parent和wrap_content的区别
在Android布局文件中定义视图垂直或水平大小: android:layout_width和android_layout_height的属性有fill_parent.wrap_content和mat ...
- Steam和Byte[]之间进行输换
一. 二进制转换成图片 MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Image img = Image.FromStream ...
- Log4J实用配置指南
转自:http://www.cnblogs.com/licheng/archive/2008/08/23/1274566.html 1 概述 本文档是针对Log4j日志工具的使用指南. ...
- LInux软件的卸载和安装(转)
在linux环境中,尤其是cenos中安装过一些软件,一般是二进制安装与源码安装,现小结一下linux中的安装与卸载. 一.通常Linux应用软件的安装包有三种: 1) tar包,如software- ...
- AjaxUpload.3.5.js之ASP.NET 文件上传
一.引入js文件 <script type="text/javascript" src="/Scripts/JQuery.min.js"></ ...