https://www.lydsy.com/JudgeOnline/problem.php?id=1951

先欧拉降幂

然后模数质因数分解

分别计算组合数的结果,中国剩余定理合并

#include<cmath>
#include<cstdio>
#include<iostream> using namespace std; const int mod=;
const int phi=mod-; typedef long long LL; int p[];
LL mul[][]; LL c[]; void pre()
{
p[]=;
p[]=;
p[]=;
p[]=;
for(int i=;i<=;++i)
{
mul[i][]=;
for(int j=;j<=;++j) mul[i][j]=mul[i][j-]*j%p[i];
}
} LL gcd(LL a,LL b)
{
return !b ? a : gcd(b,a%b);
} LL Pow(LL a,LL b,LL mod)
{
LL ans=;
for(;b;a=a*a%mod,b>>=)
if(b&) ans=ans*a%mod;
return ans;
} LL C(LL n,LL m,int i)
{
if(m>n) return ;
return mul[i][n]*Pow(mul[i][m],p[i]-,p[i])%p[i]*Pow(mul[i][n-m],p[i]-,p[i])%p[i];
} LL Lucas(LL n,LL m,int i)
{
if(m>n) return ;
LL ans=;
for(;m;n/=p[i],m/=p[i]) ans=(ans*C(n%p[i],m%p[i],i))%p[i];
return ans;
} void exgcd(LL a,LL b,LL &x,LL &y)
{
if(!b) x=,y=;
else exgcd(b,a%b,y,x),y-=a/b*x;
} int main()
{
pre();
LL n,g;
cin>>n>>g;
if(gcd(g,mod)!=)
{
printf("");
return ;
}
int m=sqrt(n);
for(int i=;i<=m;++i)
if(n%i==)
{
for(int j=;j<=;++j) c[j]=(c[j]+Lucas(n,i,j))%p[j];
if(n/i!=i)
for(int j=;j<=;++j) c[j]=(c[j]+Lucas(n,n/i,j))%p[j];
}
LL ans=;
LL Mi,mi,x,y;
for(int i=;i<=;++i)
{
Mi=phi/p[i];
mi=p[i];
exgcd(Mi,mi,x,y);
x=(x%mi+mi)%mi;
if(!x) x+=mi;
ans+=c[i]*Mi*x;
}
ans=Pow(g,ans,mod);
cout<<ans;
}

bzoj千题计划323:bzoj1951: [Sdoi2010]古代猪文(Lucas+CRT+欧拉定理)的更多相关文章

  1. BZOJ1951:[SDOI2010]古代猪文(Lucas,CRT)

    Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...

  2. P2480 [SDOI2010]古代猪文 Lucas+CRT合并

    \(\color{#0066ff}{ 题目描述 }\) 猪王国的文明源远流长,博大精深. iPig在大肥猪学校图书馆中查阅资料,得知远古时期猪文文字总个数为N.当然,一种语言如果字数很多,字典也相应会 ...

  3. 【BZOJ1951】古代猪文(CRT,卢卡斯定理)

    [BZOJ1951]古代猪文(CRT,卢卡斯定理) 题面 BZOJ 洛谷 题解 要求什么很显然吧... \[Ans=G^{\sum_{k|N}{C_N^k}}\] 给定的模数是一个质数,要求解的东西相 ...

  4. 【BZOJ1951】[Sdoi2010]古代猪文 Lucas定理+CRT

    [BZOJ1951][Sdoi2010]古代猪文 Description 求$X=\sum\limits_{d|n}C_n^d$,$Ans=G^X (\mod 999911659)$. Input 有 ...

  5. BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]

    1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 2194  Solved: 919[Submit][Status] ...

  6. [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT

    Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...

  7. BZOJ1951[SDOI2010]古代猪文

    Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...

  8. BZOJ1951 [Sdoi2010]古代猪文 【费马小定理 + Lucas定理 + 中国剩余定理 + 逆元递推 + 扩展欧几里得】

    题目 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久很久以前,在山的那 ...

  9. 洛谷 P2480 [SDOI2010]古代猪文 题解【欧拉定理】【CRT】【Lucas定理】

    数论综合题. 题目背景 题目背景与题目无关因此省略.题目链接 题目描述 猪王国的文明源远流长,博大精深. iPig 在大肥猪学校图书馆中查阅资料,得知远古时期猪文文字总个数为 \(N\).当然,一种语 ...

随机推荐

  1. Marriage Match II HDU - 3081(二分权值建边)

    题意: 有编号为1~n的女生和1~n的男生配对 首先输入m组,a,b表示编号为a的女生没有和编号为b的男生吵过架 然后输入f组,c,d表示编号为c的女生和编号为d的女生是朋友 进行配对的要求满足其一即 ...

  2. 【XSY2703】置换 数学 置换 DP

    题目描述 对于置换\(p\),定义\(f(p)\)为最小的正整数\(k\),使得\(p^k\)为恒等置换. 你需要求对于所有的\(n\)元素置换\(p\),\(f^2(p)\)的平均值. \(n\le ...

  3. readlink: command not found 解决方案

    /c/Program Files (x86)/Yarn/bin/yarn: line 3: readlink: command not found 用gitbash运行yarn时提示这个错误,但没有直 ...

  4. [luogu3391][bzoj3223]文艺平衡树【splay】

    题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 分析 ...

  5. BZOJ 2839: 集合计数 解题报告

    BZOJ 2839: 集合计数 Description 一个有\(N\)个元素的集合有\(2^N\)个不同子集(包含空集),现在要在这\(2^N\)个集合中取出若干集合(至少一个),使得 它们的交集的 ...

  6. poj 3252 Round Numbers(数位dp 处理前导零)

    Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, P ...

  7. 20165223 《JAVA程序设计》第五周学习总结

    教材学习内容总结 第七章要点 内部类 匿名类 异常类 断言 第十章要点 File类 文件字节/字符的输入.输出流 缓冲流 随机流 数组流 数据流 对象流 序列化和对象克隆 使用Scanner解析文件 ...

  8. WebService学习总结(一)——WebService的相关概念

    一.序言 大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成 分.但是不得不承认的是W ...

  9. SpaceVim中vimproc的vimproc_linux64.so未找到

    vimproc是我使用的SpaceVim中自动安装的插件,在启动时出现了"找不到dll文件"的提示,通过查阅官网( https://github.com/Shougo/vimpro ...

  10. 【洛谷P3901】数列找不同

    题目大意:给定一个长度为 N 的序列,每个点被染了一个颜色.现有 M 个询问,每个询问查询区间 [l,r] 内的点是否颜色都是不同的. 题解:莫队裸题. 直接维护区间颜色数,用 cnt[] 记录下区间 ...