luogu 2480 古代猪文 数论合集(CRT+Lucas+qpow+逆元)
一句话题意:G 的 sigma d|n C(n d) 次幂 mod 999911659
(我好辣鸡呀还是不会mathjax)
分析:
1.利用欧拉定理简化模运算 ,将上方幂设为x,则x=原式mod 999911658.
2.发现幂的前半部分太大无法直接算,又因为999911658 可分解为 2 3 4679 35617 四个质数
3.利用中国剩余定理可分别计算 x=a1(mod m1=2) ...最后利用它统计出x
4.快速幂将答案计算
#include<bits/stdc++.h>
#define int long long
#define rep(i,x,y) for(register int i=x;i<=y;i++)
#define dec(i,x,y) for(register int i=x;i>=y;i--)
using namespace std; const int mod=; int n,g,m[]={,,,,},a[];
int fac[][]; inline int qpow(int a,int n,int p){
int s=;while(n){if(n&) s=s*a%p;a=a*a%p;n>>=;}return s;} inline void init(){
fac[][]=fac[][]=fac[][]=fac[][]=;
rep(i,,)rep(j,,)
fac[i][j]=fac[i-][j]*i%m[j];} inline int C(int a,int b,int c){
if(a<b) return ;
return fac[a][c]*qpow(fac[b][c],m[c]-,m[c])%m[c]*qpow(fac[a-b][c],m[c]-,m[c])%m[c]; } inline int Lucas(int a,int b,int c){
if(!b) return ;
return C(a%m[c],b%m[c],c)*Lucas(a/m[c],b/m[c],c)%m[c];} inline void work(int i){
rep(j,,) a[j]=(a[j]+Lucas(n,i,j))%m[j];} inline int CRT(){ int x=,M=mod-;
rep(i,,){ int Mi=M/m[i];
x=(x+a[i]*Mi*qpow(Mi,m[i]-,m[i])%M)%M;}return x;} #undef int
int main(){
#define int long long
scanf("%lld%lld",&n,&g); init();
if(g%mod==) {printf("");return ;} rep(i,,sqrt(n))
if(n%i==){ work(i);
if(i*i!=n) work(n/i);} printf("%lld\n",qpow(g,CRT(),mod));return ;
}
luogu 2480 古代猪文 数论合集(CRT+Lucas+qpow+逆元)的更多相关文章
- 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]古代猪文 数论-中国剩余定理-Lucas定理
[bzoj1951]: [Sdoi2010]古代猪文 因为999911659是个素数 欧拉定理得 然后指数上中国剩余定理 然后分别lucas定理就好了 注意G==P的时候的特判 /* http://w ...
- BZOJ-1951 古代猪文 (组合数取模Lucas+中国剩余定理+拓展欧几里得+快速幂)
数论神题了吧算是 1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1573 Solved: 650 [Submit ...
- [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT
Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...
- bzoj1951 [Sdoi2010]古代猪文 ——数论综合
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 题意就是要求 G^( ∑(k|n) C(n,k) ) % p,用费马小定理处理指数,卢 ...
- BZOJ.1951.[SDOI2010]古代猪文(费马小定理 Lucas CRT)
题目链接 \(Description\) 给定N,G,求\[G^{\sum_{k|N}C_n^k}\mod\ 999911659\] \(Solution\) 由费马小定理,可以先对次数化简,即求\( ...
- 【bzoj1951】[Sdoi2010]古代猪文 费马小定理+Lucas定理+中国剩余定理
题目描述 求 $g^{\sum\limits_{k|n}C_{n}^{\frac nk}}\mod 999911659$ 输入 有且仅有一行:两个数N.G,用一个空格分开. 输出 有且仅有一行:一个 ...
- luogu_2480: 古代猪文
洛谷:2480古代猪文 题意描述: 给定两个整数\(N,G\),求$G^{\sum_{k|n}C_n^k} mod 999911659 $. 数据范围: \(1\leq N\leq 10^9,1\le ...
- 古代猪文:数论大集合:欧拉定理,exgcd,china,逆元,Lucas定理应用
/* 古代猪文:Lucas定理+中国剩余定理 999911658=2*3*4679*35617 Lucas定理:(m,n)=(sp,tp)(r,q) %p 中国剩余定理:x=sum{si*Mi*ti} ...
随机推荐
- webpack入门(四)webpack的api 2 module
接着介绍webpack的module. module Options affecting the normal modules (NormalModuleFactory) 这些选项影响普通的模块 m ...
- 洛谷P4319 变化的道路
题意:给定图,每条边都有一段存在时间.求每段时间的最小生成树. 解:动态MST什么毒瘤...洛谷上还是蓝题... 线段树分治 + lct维护最小生成树. 对时间开线段树,每条边的存在时间在上面会对应到 ...
- A1042. Shuffling Machine
Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techn ...
- 【洛谷P4878】布局
题目大意:给定一个长度为 N 的递增序列,有 M 组差分约束关系,求满足这些约束关系时,第一个数和第 N 个数的差是多少. 题解:首先,能否满足约束关系需要判断一下负环,若满足约束关系,再从第一个点 ...
- [luogu5077][Tweetuzki 爱等差数列]
题目链接 思路 数学题 首先列出等差数列求和的式子. \[S = \frac{(n + m)(n - m + 1)}{2}(n为末项,m为首项)\] \[S * 2= (n + m)(n - m + ...
- TestNg 5.类分组
类分组是可以给类去分组,几个类分成不同的组. 比如,建立3个类GroupsOnClass1,GroupsOnClass2,GroupsOnClass3. GroupsOnClass1和Groups ...
- double free or corruption错误
这是我自己写代码是遇到的错误,完全想不到报错和写错的地方有关联性,记录下来给别人参考. 不允许转载. WhiteBack(&cut_buff,&out_buff,5)函数内有一段 be ...
- Jquery Mobile表单
三个前提: 1.每个form必须设置method和action属性 2.每个form必须有页面范围内唯一的id标识 3.每个form必须有一个label标签,通过设置它的for属性来匹配元素的id & ...
- HR算法具体过程
首先研究HR算法在概率分布估计中的实现,我们再考虑如何将其应用于频繁项挖掘中. 一.确定输入数据类型 def generate_uniform_distribution(k): raw_distrib ...
- mysql视图、触发事务、存储过程
视图 视图是一个虚拟表(非真实存在的),其本质就是根据SQL语言获取动态的数据集,并为其命名,用户使用时只需要使用名称即可获得结果集,可以将结果集当做表来使用. 视图是存在数据库中的,如果我们程序中使 ...