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] ...
随机推荐
- Java_Web之宠物管理系统
使用JSP+servLet实现宠物管理系统,oraC1e11g作为后台数据厍,实现查看宠物和增加宠物的功能由你实现,如图: 其中宠物包栝:狗.猫.鸟.鼠 具体要求及推荐实现步骤 第一步:创建数据库代码 ...
- 【sqli-labs】 less5 GET - Double Injection - Single Quotes - String (双注入GET单引号字符型注入)
双注入查询可以查看这两篇介绍 https://www.2cto.com/article/201302/190763.html https://www.2cto.com/article/201303/1 ...
- ASP.NET MD5加密
protected void Button1_Click(object sender, EventArgs e) { string pwd = TextBox2.Text.Trim(); Respon ...
- LoadRunner中遭遇交互数据加密的处理方案
在使用LoadRunner时,当你录制完脚本后可能会发现在交互的数据中会存在密文,或者当拿到接口文档时就已经明确的描述出了交互数据的加解密方法,你该怎么办? 事实上这样的遭遇如今已经成为了一种常态,发 ...
- Redis学习笔记(二) - 主从复制
概述 指将一台redis服务器上的数据,复制到其他redis服务器上,前者称为主服务器(master),后者称为从服务器(slave). 默认情况下主从关系为一对多关系. 数据复制是单向的,只能从主服 ...
- Git 基础教程 之 撤销修改
Git跟踪并管理的是修改,而非文件.每次修改,如果不用git add到暂存区,那就不会加入到commit中, 要么全部改完后,再add → commit :要么改一点,就add → commit. 撤 ...
- 输入输出流String间的转换
来自:http://wuhongyu.iteye.com/blog/806791 1.String to inputStream InputStream is = new ByteArrayInp ...
- Bootstrap关于表单(一)
1.基础表单 表单中常见的元素主要包括:文本输入框.下拉选择框.单选按钮.复选按钮.文本域和按钮等. 在Bootstrap框架中,通过定制了一个类名`form-control`,也就是说,如果这几个元 ...
- composer 安装教程
https://getcomposer.org/download/ 邓士鹏 1.先检查php.ini是否开启ssl ;extension=php_openssl.dll 2. php -r &qu ...
- 怎么样调整FreeBSD时区问题
一般我们在安装系统的时候,都会遇到服务器时间不同步的情况.所以必须得设置为中国时区,比较简单的方法,就总结如下几点: 1.通过命令行启动图形界面更改 #sysinstall 请选择 configure ...