BZOJ 1951 Lucas定理+CRT
思路:
枚举约数
套个裸的Lucas+CRT就完了...
//By SiriusRen
#include <cmath>
#include <cstdio>
using namespace std;
#define int long long
const int M=,N=;
void exgcd(int a,int b,int &x,int &y){
if(!b){x=,y=;return;}
exgcd(b,a%b,x,y);
int temp=x;x=y;y=temp-a/b*y;
}
int CRT(int *a,int *m,int num){
int ans=;
for(int i=;i<=num;i++){
int x,y;
exgcd(M/m[i],m[i],x,y);
ans=(ans+M/m[i]*x%M*a[i])%M;
}return ans;
}
int power(int x,int y){
int ans=;
while(y){
if(y&)ans=ans*x%(M+);
x=x*x%(M+),y>>=;
}return ans;
}
int m[]={,,,,},n,g,fac[N],inv[N],sqr,s[N],top,ans[],T;
int C(int x,int y){
if(x<y)return ;
if(x<m[T]&&y<m[T])return fac[x]*inv[y]%m[T]*inv[x-y]%m[T];
return C(x/m[T],y/m[T])*C(x%m[T],y%m[T])%m[T];
}
signed main(){
scanf("%lld%lld",&n,&g),sqr=sqrt(n);
for(int i=;i<sqr;i++)if(n%i==)s[++top]=i,s[++top]=n/i;
if(sqr*sqr==n)s[++top]=sqr;
if(n%sqr==&&sqr*sqr!=n)s[++top]=sqr,s[++top]=n/sqr;
fac[]=fac[]=inv[]=inv[]=;
for(T=;T<=;T++){
for(int i=;i<m[T];i++)fac[i]=fac[i-]*i%m[T];
for(int i=;i<m[T];i++)inv[i]=(m[T]-m[T]/i)*inv[m[T]%i]%m[T];
for(int i=;i<m[T];i++)inv[i]=inv[i]*inv[i-]%m[T];
for(int i=;i<=top;i++)ans[T]=(ans[T]+C(n,s[i]))%m[T];
}
printf("%lld\n",power(g,CRT(ans,m,)+M));
}
BZOJ 1951 Lucas定理+CRT的更多相关文章
- bzoj 1951 lucas crt 费马小定理
首先假设输入的是n,m 我们就是要求m^(Σ(c(n,i) i|n)) mod p 那么根据费马小定理,上式等于 m^(Σ(c(n,i) i|n) mod (p-1)) mod p 那么问题的关键就 ...
- HDU 5446 Unknown Treasure(Lucas定理+CRT)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5446 [题目大意] 给出一个合数M的每一个质因子,同时给出n,m,求C(n,m)%M. [题解] ...
- 【BZOJ1951】[Sdoi2010]古代猪文 Lucas定理+CRT
[BZOJ1951][Sdoi2010]古代猪文 Description 求$X=\sum\limits_{d|n}C_n^d$,$Ans=G^X (\mod 999911659)$. Input 有 ...
- [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT
Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...
- 组合数取模(lucas定理+CRT合并)(AC)
#include<bits/stdc++.h> #define re register #define int long long using namespace std; ; inlin ...
- BZOJ 3782: 上学路线 [Lucas定理 DP]
3782: 上学路线 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 192 Solved: 75[Submit][Status][Discuss] ...
- BZOJ 1951 古代猪文
快速幂+枚举质因数+欧拉定理+lucas定理+CRT. 注意两点: 1.if (n<m) C(n,m)=0. 2.这里0^0时应该return 0. #include<iostream&g ...
- BZOJ.1951.[SDOI2010]古代猪文(费马小定理 Lucas CRT)
题目链接 \(Description\) 给定N,G,求\[G^{\sum_{k|N}C_n^k}\mod\ 999911659\] \(Solution\) 由费马小定理,可以先对次数化简,即求\( ...
- BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]
1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2194 Solved: 919[Submit][Status] ...
随机推荐
- JavaScript自动计算价格和全选
JavaScript自动计算价格和全选,价格自增加减,复选框,反选,全选. 如图: 如图: CSS代码 @charset "gb2312"; /* CSS Document */ ...
- dubbo之服务分组
当一个接口有多种实现时,可以用group区分. 服务 <dubbo:service group="feedback" interface="com.xxx.Inde ...
- 人脸Pose检测:ASM、AAM、CLM总结
人脸的Pose检测可以使用基于位置约束的特征点的方法.人脸特征点定位的目的是在人脸检测的基础上,进一步确定脸部特征点(眼睛.眉毛.鼻子.嘴巴.脸部外轮廓)的位置.定位算法的基本思路是:人脸的纹理特征和 ...
- 视频及MP3 播放浅析 Jplayer参数详细
初识jplayer插件是因为它的兼容性是最好的,可以兼容到IE6,官网上对它兼容性有很详细的说明 这个是我选择使用它的首要原因. 现在从需求上来了解它的使用方法吧.第一个需求:MP3格式的音频在网页播 ...
- Docker系列之入门
Docker基本介绍 一.什么是Docker 在docker的官方之什么是docker中提到了一句话:“当今各大组织或者团体的创新都源于软件(例如OA.ERP等),其实很多公司都是软件公司" ...
- 【udacity】机器学习-神经网络
Evernote Export 1.神经网络 神经元 细胞的主体称为细胞体,然后有轴突.突触 他们构建的方式是可以调整的 我们会有一些输入的放电信号视为放电频率或输入的强度 X1w1X2w2X ...
- eas快捷键
ctrl+shift+c 获取分录行的id ctrl+alt+[ 获取任意界面操作的信息
- 【剑指Offer】63、数据流中的中位数
题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平 ...
- window.open方法被浏览器拦截的处理方式
问题现象 当我们在一个 ajax 回调中执行 window.open 方法时,新页面会被浏览器拦截. 原因 在 Chrome 的安全机制里,非用户直接触发的 window.open 方法,是会被拦截的 ...
- javascript 数组 常用方法
前言 学学忘忘 闲来做个笔记 整理下数组常用方法. Array 数组常用方法 创建数组的基本方式有两种 1.第一种是使用Array构造函数, var arr = new Array(); ...