洛谷P2480 [SDOI2010]古代猪文
要求
(图是盗来的QAQ)
首先用欧拉定理把幂模一下,直接就是MOD-1了
然后发现MOD-1可以分解为2,3,4679,35617,都是质数,可以直接用Lucas定理
然后用中国剩余定理合并一下即可
千万不可把MOD和MOD-1搞混了,否则调试好麻烦的
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<vector>
#include<cmath>
#define MAXN 35617+10
#define ll long long
#define pb push_back
#define ft first
#define sc second
#define mp make_pair
using namespace std;
ll c[],m[]={,,,,};
ll MOD=;
ll N,G;
ll inv[MAXN],finv[MAXN],fac[MAXN];
ll Pow(ll a,ll b,ll p){
ll ret=1LL;
while(b){
if(b&){
(ret*=a)%=p;
}
(a*=a)%=p;
b>>=;
}
return ret;
}
ll Inv(ll x,ll p){
return Pow(x,p-,p);
}
ll C(ll n,ll m,ll p){
if(n<m)return 0LL;
return fac[n]*finv[m]*finv[n-m]%p;
}
ll Lucas(ll n,ll m,ll p){
if(!m)return 1LL;
if(n>=p||m>=p){
ll nn=n%p,mm=m%p;
if(nn<mm)return 0LL;
return Lucas(n/p,m/p,p)*C(nn,mm,p)%p;
}
else{
return C(n,m,p);
}
}
ll solve(ll p){
fac[]=fac[]=;
finv[]=finv[]=;
inv[]=;
for(int i=;i<p;i++){
fac[i]=fac[i-]*i%p;
inv[i]=p-(inv[p%i]*(p/i)%p);
finv[i]=finv[i-]*inv[i]%p;
}
ll t=sqrt(1.0*N);
ll ret=0LL;
for(ll i=;i<=t;i++){
if(N%i==){
ret+=Lucas(N,i,p);
if(N/i!=i){
ret+=Lucas(N,N/i,p);
}
}
}
return ret;
}
ll CRT(){
ll M=MOD-;
ll ret=0LL;
for(int i=;i<=;i++){
ll t=Inv(M/m[i],m[i])%M*(M/m[i])%M;
ret+=t*c[i]%M;
ret%=M;
}
return ret;
}
int main()
{
scanf("%lld%lld",&N,&G);
if(G%MOD==){
printf("0\n");
return ;
}
for(int i=;i<=;i++) c[i]=solve(m[i]);
ll x=CRT();
ll ans=Pow(G,x,MOD);
printf("%lld\n",ans);
}
洛谷P2480 [SDOI2010]古代猪文的更多相关文章
- 洛谷 P2480 [SDOI2010]古代猪文 解题报告
P2480 [SDOI2010]古代猪文 题目背景 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" ...
- 洛谷 P2480 [SDOI2010]古代猪文 题解【欧拉定理】【CRT】【Lucas定理】
数论综合题. 题目背景 题目背景与题目无关因此省略.题目链接 题目描述 猪王国的文明源远流长,博大精深. iPig 在大肥猪学校图书馆中查阅资料,得知远古时期猪文文字总个数为 \(N\).当然,一种语 ...
- 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)
洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...
- 洛谷P2480 [SDOI2010]古代猪文(卢卡斯定理+中国剩余定理)
传送门 好吧我数学差的好像不是一点半点…… 题目求的是$G^{\sum_{d|n}C^d_n}mod\ 999911659$ 我们可以利用费马小定理$a^{k}\equiv a^{k\ mod\ (p ...
- 洛咕 P2480 [SDOI2010]古代猪文
洛咕 P2480 [SDOI2010]古代猪文 题目是要求\(G^{\sum_{d|n}C^d_n}\). 用费马小定理\(G^{\sum_{d|n}C^d_n\text{mod 999911658} ...
- 【洛谷P2480】古代猪文
题目大意:求 \[ G^{\sum\limits_{d|N}\binom{n}{k}} mod\ \ 999911659 \] 题解:卢卡斯定理+中国剩余定理 利用卢卡斯定理求出指数和式对各个素模数的 ...
- 【题解】P2480 [SDOI2010]古代猪文 - 卢卡斯定理 - 中国剩余定理
P2480 [SDOI2010]古代猪文 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 猪王国的文明源远流长,博大精 ...
- P2480 [SDOI2010]古代猪文
P2480 [SDOI2010]古代猪文 比较综合的一题 前置:Lucas 定理,crt 求的是: \[g^x\bmod 999911659,\text{其中}x=\sum_{d\mid n}\tbi ...
- P2480 [SDOI2010]古代猪文 Lucas+CRT合并
\(\color{#0066ff}{ 题目描述 }\) 猪王国的文明源远流长,博大精深. iPig在大肥猪学校图书馆中查阅资料,得知远古时期猪文文字总个数为N.当然,一种语言如果字数很多,字典也相应会 ...
随机推荐
- C语言第三次作业--嵌套循环
一.PTA实验作业 题目1:硬币数 1. 本题PTA提交列表 2. 设计思路 步骤一:定义整型变量fen5,fen2,fen1,表示1分2分和5分,零钱数额x,总硬币数total,换法count 步骤 ...
- Argparse简易教程
Argparse简易教程 原文:Argparse Tutorial 译者:likebeta 本教程是对于Python标准库中推荐使用的命令行解析模块argparse的简单介绍. PS:还有其他两个模块 ...
- Angular组件——组件生命周期(一)
组件声明周期以及angular的变化发现机制 红色方法只执行一次. 变更检测执行的绿色方法和和组件初始化阶段执行的绿色方法是一个方法. 总共9个方法. 每个钩子都是@angular/core库里定义的 ...
- Node入门教程(5)第四章:global 全局变量
global - 全局变量 全局对象(global object),不要和 全局的对象( global objects )或称标准内置对象混淆.这里说的全局的对象是说在全局作用域里的内的对象.全局作用 ...
- php里面的变量的使用
php里面的变量一般可以直接使用不需要声明,但是这种var_dump($a);就会报错,还有sql语句里面如果某个变量为空也会报错. 如果变量为null,空,未声明都==false,但是不===fal ...
- 批量检测GoAhead系列服务器中Digest认证方式的服务器弱口令
最近在学习用python写爬虫工具,某天偶然发现GoAhead系列服务器的登录方式跟大多数网站不一样,不是采用POST等方法,通过查找资料发现GoAhead是一个开源(商业许可).简单.轻巧.功能强大 ...
- T410升级笔记
T410 win7 旗舰版 32 sp1 三星 DDR3 1066 mhz core i5 M 540 2.53GHZ 双核 日立 HTS725032A9A364 320G/7200转/分 sa ...
- jquery下关于input和label的关于点击事件的坑
待填坑: 法院费用结算页面的案件类型
- Django REST framework+Vue 打造生鲜超市(四)
五.商品列表页 5.1.django的view实现商品列表页 (1)goods/view_base.py 在goods文件夹下面新建view_base.py,为了区分django和django res ...
- c++中的类之构造函数
一.构造函数的缘由 本文我们主要来讲解c++中类的构造函数,其中涉及了深拷贝和浅拷贝的问题,这也是在面试笔试中经常会碰到的问题.如果您是第一次听说构造函数,可能会觉得这个名字有点高大上,而它却和实际中 ...