【bzoj1951】: [Sdoi2010]古代猪文 数论-中国剩余定理-Lucas定理

因为999911659是个素数
欧拉定理得

然后指数上中国剩余定理

然后分别lucas定理就好了
注意G==P的时候的特判
/* http://www.cnblogs.com/karl07/ */
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define ll long long const ll P=;
const ll p1[] = {, , , , };
const ll N=;
ll g,n,cnt=;
ll fac[N+],ifac[N+];
ll p[N],ans[]; ll Q_pow(ll a,ll b,ll p){
ll ans=;
while (b){
if (b&) ans=ans*a%p;
a=a*a%p;
b=(b>>);
}
return ans;
} void FAC(ll p){
ifac[]=fac[]=;
for (int i=;i<=N;i++) fac[i]=fac[i-]*i%p,ifac[i]=Q_pow(fac[i],p-,p);
} ll C(ll n,ll m,ll p){
if (m>n) return ;
return fac[n]*ifac[m]%p*ifac[n-m]%p;
} ll lucas(ll n,ll m,ll p){
if (m==) return ;
return lucas(n/p,m/p,p)*C(n%p,m%p,p)%p;
} void fj(ll x){
for (int i=;i*i<=x;i++){
if (x%i==){
p[++cnt]=i;
if (i*i!=x) p[++cnt]=n/i;
}
}
} ll gcd(ll a,ll b){return b ? gcd(b,a%b) : a;} void ex_gcd(ll a,ll b,ll &x,ll &y){
if (b==){x=;y=;return;}
ex_gcd(b,a%b,y,x);
y-=x*(a/b);
} ll China(){
ll a0=ans[],p0=p1[];
for (int i=;i<=;i++){
ll x,y,g=gcd(p0,p1[i]);
ex_gcd(p0,p1[i],x,y);
x=(x*(ans[i]-a0)%p1[i]+p1[i])%p1[i];
a0=a0+x*p0;
p0=p0/g*p1[i];
}
return a0;
} void work(){
for(int i=;i<=;i++){
FAC(p1[i]);
for (int j=;j<=cnt;j++){
ans[i]=(ans[i]+lucas(n,n/p[j],p1[i]))%p1[i];
}
}
printf("%lld\n",Q_pow(g,China(),P));
} int main(){
scanf("%lld%lld",&n,&g);
if (g==P) {puts(""); return ;}
fj(n);
work();
return ;
}
各种zz的错误。。调了一年
而且跑的巨慢无比。。
【bzoj1951】: [Sdoi2010]古代猪文 数论-中国剩余定理-Lucas定理的更多相关文章
- BZOJ1951 [Sdoi2010]古代猪文 【费马小定理 + Lucas定理 + 中国剩余定理 + 逆元递推 + 扩展欧几里得】
题目 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久很久以前,在山的那 ...
- bzoj 1951: [Sdoi2010]古代猪文 【中国剩余定理+欧拉定理+组合数学+卢卡斯定理】
首先化简,题目要求的是 \[ G^{\sum_{i|n}C_{n}^{i}}\%p \] 对于乘方形式快速幂就行了,因为p是质数,所以可以用欧拉定理 \[ G^{\sum_{i|n}C_{n}^{i} ...
- bzoj1951 [Sdoi2010]古代猪文 ——数论综合
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 题意就是要求 G^( ∑(k|n) C(n,k) ) % p,用费马小定理处理指数,卢 ...
- 【BZOJ1951】古代猪文(CRT,卢卡斯定理)
[BZOJ1951]古代猪文(CRT,卢卡斯定理) 题面 BZOJ 洛谷 题解 要求什么很显然吧... \[Ans=G^{\sum_{k|N}{C_N^k}}\] 给定的模数是一个质数,要求解的东西相 ...
- 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 ...
- BZOJ1951 [Sdoi2010]古代猪文 中国剩余定理 快速幂 数论
原文链接http://www.cnblogs.com/zhouzhendong/p/8109156.html 题目传送门 - BZOJ1951 题意概括 求 GM mod 999911659 M=∑i ...
- BZOJ1951[SDOI2010]古代猪文
Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...
- [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT
Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...
- BZOJ1951:[SDOI2010]古代猪文(Lucas,CRT)
Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...
随机推荐
- java常用的空对象 null
- Disconf —— 来自百度的分布式配置管理平台
摘要 为了更好的解决分布式环境下多台服务实例的配置统一管理问题,本文提出了一套完整的分布式配置管理解决方案(简称为disconf[4],下同).首先,实现了同构系统的配置发布统一化,提供了配置服务se ...
- 分布式代码管理github
Git是世界上最先进的分布式版本的控制系统,特点是:简单大气上档次. Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了.
- idea右键单击没有 svn选项处理办法
问题一: IntelliJ IDEA打开带SVN信息的项目不显示SVN信息,项目右键SVN以及图标还有Changes都不显示解决方法 在VCS菜单中有个开关,叫Enabled Version Cont ...
- CDM中遍历域及其约束条件、取值范围、引用它的项目
Option ExplicitValidationMode = TrueInteractiveMode = im_BatchDim mdl '当前model'获取当前活动mod ...
- 2015.1.15 利用航线id取所有点的函数创建视图
1.根据航路id取所有航路点的函数 create or replace function alinepnts(alid in number) return tab_airline_pnt is --返 ...
- 第九章 Java中线程池
Java中的线程池是运用场景最多的并发框架,几乎所有需求异步或并发执行任务的程序都可以使用线程池.在开发过程中,合理地使用线程池能够带来3个好处. 降低资源消耗:通过重复利用已创建的线程降低线程创建和 ...
- redis学习三 redis持久化
1,快照持久化 1简介 redis可以通过创建快照来获得某个时间点上的内存内容的数据副本,有了副本之后,就可以将副本发送到其他redis服务器上从而创建相同数据的从服务器,同时快照留在原 ...
- 问题:oracle if;结果:Oracle IF语句的使用
oracle 之if..else用法 oracle条件分支用法 a.if...then b.if...then... else c.if...then... elsif.... else 实例 1 问 ...
- LAMP 2.5 Apache禁止解析php
某个目录下禁止解析 php,这个很有用,我们做网站安全的时候,这个用的很多,比如某些目录可以上传文件, 为了避免上传的文件有木马, 所以我们禁止这个目录下面的访问解析 php. 安装目录下有个data ...