【BZOJ1951】古代猪文(CRT,卢卡斯定理)
【BZOJ1951】古代猪文(CRT,卢卡斯定理)
题面
BZOJ
洛谷
题解
要求什么很显然吧。。。
\[Ans=G^{\sum_{k|N}{C_N^k}}\]
给定的模数是一个质数,要求解的东西相当于是上面那坨东西的结果对于\(\varphi\)的取值。
但是\(\varphi\)不是质数,不好直接\(Lucas\)定理,把\(\varphi\)分解质因数之后,
直接\(CRT\)合并结果就好了,所以这个就是\(ex\_Lucas\)
#include<iostream>
#include<cstdio>
using namespace std;
#define ll long long
#define RG register
#define MAX 50000
#define MOD (999911659)
#define phi (999911658)
inline int read()
{RG int x=0,t=1;RG char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=-1,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return x*t;
}
int fpow(int a,int b,int P)
{int s=1;if(!a)return 0;while(b){if(b&1)s=1ll*s*a%P;a=1ll*a*a%P;b>>=1;}return s;
}
int pri[5]={0,2,3,4679,35617},tot=4;
int jc[5][MAX],jv[5][MAX],N,G,ans;
void pre(int P)
{jc[P][0]=1;for(int i=1;i<=pri[P];++i)jc[P][i]=1ll*jc[P][i-1]*i%pri[P];jv[P][pri[P]-1]=fpow(jc[P][pri[P]-1],pri[P]-2,pri[P]);for(int i=pri[P]-2;~i;--i)jv[P][i]=1ll*jv[P][i+1]*(i+1)%pri[P];
}
int C(int n,int m,int P){return 1ll*jc[P][n]*jv[P][m]%pri[P]*jv[P][n-m]%pri[P];}
int Lucas(int n,int m,int P)
{if(m>n)return 0;if(!m)return 1;if(n<pri[P]&&m<pri[P])return C(n,m,P);return 1ll*Lucas(n/pri[P],m/pri[P],P)*Lucas(n%pri[P],m%pri[P],P)%pri[P];
}
int exgcd(int a,int b,int &x,int &y)
{if(!b){x=1;y=0;return a;}int d=exgcd(b,a%b,y,x);y-=a/b*x;return d;
}
int CRT(int k)
{int x,y,a,ret=0;for(int i=1;i<=4;++i){a=Lucas(N,k,i);exgcd(phi/pri[i],pri[i],x,y);x=(x%pri[i]+pri[i])%pri[i];ret=(ret+1ll*a*x%phi*(phi/pri[i])%phi)%phi;}return (ret+phi)%phi;
}
int main()
{pre(1);pre(2);pre(3);pre(4);N=read();G=read()%MOD;for(int i=1;i*i<=N;++i)if(N%i==0){ans=(ans+CRT(i))%phi;if(i*i!=N)ans=(ans+CRT(N/i))%phi;}ans=fpow(G,ans,MOD);printf("%d\n",ans);return 0;
}
转载于:https://www.cnblogs.com/cjyyb/p/9316332.html
【BZOJ1951】古代猪文(CRT,卢卡斯定理)相关推荐
- 洛谷P2480 [SDOI2010]古代猪文(卢卡斯定理+中国剩余定理)
传送门 好吧我数学差的好像不是一点半点-- 题目求的是$G^{\sum_{d|n}C^d_n}mod\ 999911659$ 我们可以利用费马小定理$a^{k}\equiv a^{k\ mod\ (p ...
- BZOJ-1951 古代猪文 (组合数取模Lucas+中国剩余定理+拓展欧几里得+快速幂)...
数论神题了吧算是 1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1573 Solved: 650 [Submit ...
- 【bzoj1951】【古代猪文】Lucas定理+欧拉定理+孙子定理
(上不了p站我要死了,当然是游戏原画啊) Description (题面倒是很有趣,就是太长了) 题意: 一个朝代流传的猪文文字恰好为N的k分之一,其中k是N的一个正约数(可以是1和N).不过具体是哪 ...
- BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]
1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 2194 Solved: 919 [Submit][Statu ...
- P2480 [SDOI2010]古代猪文
P2480 [SDOI2010]古代猪文 题目背景 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" ...
- 1951: [Sdoi2010]古代猪文
http://www.lydsy.com/JudgeOnline/problem.php?id=1951 题意:求G^(C(N,N/K))%mod ( K|N) 1951: [Sdoi2010]古代猪 ...
- P2480 [SDOI2010]古代猪文(数论好题)
P2480 [SDOI2010]古代猪文 题意: 给你n和g,求g∑d∣nCndmodpg^{\sum_{d|n}C_{n}^{d}}\bmod pg∑d∣nCndmodp p=999911659 ...
- 【SDOI2010】古代猪文
[SDOI2010]古代猪文 Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--&quo ...
- [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT
Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...
最新文章
- 工业界AI项目落地的繁琐过程
- 删除排序数组中的重复数字 II
- Java 8 新特性 Optional 类学习,理解并应用。NullPointerException空值检测
- 三元运算符(TernaryOperator)
- JavaScript学习(六十七)—正则表达式学习总结
- Cyborg Genes UVA - 10723
- TypeScript入门学习笔记
- mysql 数据库基础教程(一)
- Google 数学之美系列整理
- Oracle 多行显示在一行详解(listagg)
- Oracle生成100万条测试数据的方法
- 解决系统任务管理器已经被管理员停用
- java 文件移动_java 文件移动
- 存储技术(一)-基本概念和技术发展
- 批量识别PDF/OFD/PNG/JPG电子发票到EXCEL
- 随笔--百度和迅雷的原理
- APP的缓存文件到底应该存在哪?
- 根据checkBox的状态,控制按钮可否点击。不可点击置灰
- Altium Designer 20 怎么新建工程
- 用Python写表白程序,给另一半一个惊喜
热门文章
- Thinkphp3.2在IIS中使用ISAPI_Rewrite去除index.php
- php二叉排序树,二叉排序树(建树)
- 在 Arch Linux 玩百度 Flash 战曲游戏乱码
- Service worker 的概念和用法
- 修改windows功能要开启哪个服务器,win7更改windows功能提示出现错误并非所有的功能被成功更改怎么办...
- 一键关闭服务器危险端口BAT文件安防篇
- java 将bean转化为map,将javabean转化为map对象
- 轻量级linux iso,antiX 17.2 发布,基于Debian的轻量级Linux发行版
- apk ionic 破损_ionic3-android打包完美解决
- web文件上传(一)--文件上传与json上传区别及方法