洛谷P2480:古代猪文(中国剩余定理)(欧拉定理)

传送门

文章目录

  • 题目描述
  • 解析
  • 总结
  • 代码

题目描述

请添加图片描述

解析

简单来说,就是求:

g∑C(d,n)(d是n的约数)mod 999911659

可以先特判一下,999911659|g时,答案为0
否则,可以通过欧拉定理转化为:

g∑C(d,n)(d是n的约数)mod999911658 mod 999911659

取完模之后,指数已经限制在了一个较小的范围,如果求出其值,就可以用快速幂解决
现在考虑求这个指数:

∑C(d,n)(d是n的约数)mod999911658

面对这样较大的组合数取模,容易想到用卢卡斯定理解决
但是问题在于本题的模数太大
所以我们考虑对这个模数进行质因数分解:

999911658=234679*35617

如果对这四个模数分别取模,就能把模数限制在一个可以接受的大小,并建立出4个同余方程
然后再利用中国剩余定理,解出这个指数即可

总结

本题的关键在于遇见大模数后进行质因数分解在进行中国剩余定理的转化

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define ll long long
#define int long long
const int N=3e5+100;
const ll mod=999911658;
const ll Mod=999911659;
ll ksm(ll x,ll o){ll ans=1,res=x%Mod;while(o){if(o&1) ans=(ans*res)%Mod;res=(res*res)%Mod;o>>=1;}return ans%Mod;
}
ll n;
ll g;
ll m[5]={0,2,3,4679,35617},M[5],MM,t[5];
ll d[N],num;
void divide(ll x){int top=floor(sqrt(x));d[++num]=1;for(int i=2;i<=top;i++){if(x%i==0){d[++num]=i;if(n/i!=i) d[++num]=n/i;}}d[++num]=x;return;
}
ll ni[5][N],jc[N];
ll a[5];ll C(int k,ll d,ll n){if(d>n) return 0;if(d==n) return 1;return (jc[n]*ni[k][d]*ni[k][n-d])%m[k]; 
}
ll lucas(int k,ll d,ll n){if(d==n) return 1;if(d>n) return 0;return (C(k,d%m[k],n%m[k])%m[k])*lucas(k,d/m[k],n/m[k])%m[k];
}
void gcd(ll a,ll b,ll &x,ll &y){if(b==0){x=1;y=0;return;}gcd(b,a%b,x,y);int o=y;y=x-a/b*y;x=o;y%=mod;x%=mod;
}
signed main(){scanf("%lld%lld",&n,&g);if(g%Mod==0) {printf("0");return 0;}divide(n);jc[0]=jc[1]=1;for(int i=1;i<=4;i++) ni[i][0]=ni[i][1]=1;for(int i=2;i<=35167;i++){jc[i]=(jc[i-1]*i)%mod;for(int j=1;j<=4;j++) ni[j][i]=((m[j]-m[j]/i)*ni[j][m[j]%i])%m[j];}for(int i=2;i<=35167;i++) for(int j=1;j<=4;j++)ni[j][i]=(ni[j][i]*ni[j][i-1])%m[j];for(int i=1;i<=num;i++){for(int j=1;j<=4;j++){a[j]=(a[j]+lucas(j,d[i],n))%m[j];//printf("d=%lld mod=%lld ans=%lld\n",d[i],m[j],lucas(j,d[i],n)%m[j]);}}MM=mod;ll ans=0;for(int i=1;i<=4;i++){M[i]=MM/m[i];ll o;gcd(M[i],m[i],t[i],o);ans+=(t[i]*M[i]*a[i])%mod;ans%=mod;}
//	for(int j=1;j<=4;j++){
//		printf("k=%d mod=%d:\n",j,m[j]){
//			for(int i=1;i<=num;i++){
//				printf
//			}
//		}
//	}ans%=MM;while(ans<0) ans+=MM;printf("%lld\n",ksm(g,ans)%Mod);return 0;
}
/*
4
5 1
5 2
7 3
4 2
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

杯子 + Kronican

杯子 Kronican 【题目描述】 重庆八中在80周年校庆的时候获捐n个杯子&#xff0c; 每个杯子有两个属性&#xff1a;一个是已装水量 ai&#xff0c;一个是可装水量 bi&#xff08;ai < bi&#xff09;。 从一个杯子向另一个杯子倒 x 单位体积的水需要花费的时间是 x 秒。 现…

微软开源的Trill是什么?

以下是一篇15年的文章的译文&#xff1a;https://dwainegilmer.wordpress.com/2015/01/28/microsoft-trill-for-streaming-analytics-from-microsoft-research/当今许多大数据应用程序套件的重点是数据存储。它们是围绕狭窄范围的数据集设想和设计的&#xff0c;通常是为了组织…

剪纸游戏(博弈论)(SG函数)

文章目录题目描述解析题目描述 解析 本题的关键就是SG函数的定义 尝试了一些自己直观上可能对但题解没有使用的约定方法&#xff08;当然最后证明都是错的 。。。&#xff09;&#xff0c;对SG的理解更深刻了一些 SG0的含义是无法再移动换句话说也就是再移动也对败局于事无补&…

[COCI2017-2018#5] Karte

[COCI2017-2018#5] Karte&#xff0c;简短的代码想到了就AC 这道题是SPJ放心搞 但是我的脑子里面的东西&#xff0c;不用我多说&#xff0c;你们就知道是水和面粉和成的 看招 题 【题目描述】 你有一副共有N张牌的牌&#xff0c;在第i张牌上会有一个数字ai表示在这张牌下面至…

YBTOJ:红与蓝(博弈论)

文章目录题目描述解析代码题目描述 解析 首先&#xff0c;这道题的情境对二人来说是不对称的&#xff0c;所以不太好使用SG函数来求解 但直观上也好考虑 利用树的递归性质可以求出每个节点的颜色是否确定 并确定根的颜色是否确定 如果确定是红就随便涂 确定是蓝就-1 关键在于不…

eShopOnContainers 看微服务④:Catalog Service

服务简介Catalog service&#xff08;目录服务&#xff09;维护着所有产品信息&#xff0c;包括库存、价格。所以该微服务的核心业务为&#xff1a;产品信息的维护库存的更新价格的维护架构模式先看代码结构&#xff08;下图&#xff09;。主要依赖&#xff1a;1、HealthCheck …

【CF 1195】Basketball Exercise/Submarine in the Rybinsk Sea (hard edition)/OpenStreetMap+二维单调队列滑动窗口模板

寡人认为C&#xff0c;E都是比较板的题 butD2也太ex了&#xff0c;大大是被那个mod精给弄疯了&#xff0c;我mod了那么多次还是炸了longlong orz 文章目录二维单调队列模板C&#xff1a;Basketball Exercise题目大意题解代码实现D2&#xff1a;Submarine in the Rybinsk Sea (…

YBTOJ:方程的解(组合数学)(插板法)

文章目录题目描述解析代码题目描述 解析 第一感觉&#xff1a;啥都没感觉出来。。。 直接拿动态规划高精做的 但是只能拿40 重新分析一下这道题&#xff1a; g&#xff08;x&#xff09;首先可以拿快速幂很容易的求出来 问题就转化为了**把g(x)个东西分成k份的方案数 其实答案…

开源库Magicodes.Storage正式发布

说明Magicodes.Storage&#xff0c;是心莱科技团队提供的统一存储库&#xff0c;相关库均使用.NET标准库&#xff08;netstandard2.0&#xff09;编写&#xff0c;支持.NET Framework以及.NET Core。我们希望&#xff0c;使用了Magicodes.Storage之后&#xff0c;开发者可以很快…

【CF 1188 A1,B,C】Add on a Tree // Count Pairs // Array Beauty

传送门 这些天风也温柔&#xff0c;题也温柔 开车啦&#xff01; 文章目录A1&#xff1a;Add on a Tree题意翻译题解证明代码实现B&#xff1a;Count Pairs题意翻译题解代码实现C&#xff1a;Array Beauty题目描述题解代码实现A1&#xff1a;Add on a Tree 题意翻译 给定一棵…

eShopOnContainers 知多少[5]:EventBus With RabbitMQ

1. 引言事件总线这个概念对你来说可能很陌生&#xff0c;但提到观察者&#xff08;发布-订阅&#xff09;模式&#xff0c;你也许就很熟悉。事件总线是对发布-订阅模式的一种实现。它是一种集中式事件处理机制&#xff0c;允许不同的组件之间进行彼此通信而又不需要相互依赖&am…

YBTOJ:数列方案(组合数学)

文章目录题目描述解析代码题目描述 解析 如果它不取等&#xff0c;那就和方程的解这道题一样了&#xff0c;但有了等号就很头疼 如何把等号去掉呢&#xff1f; 定义BiAiiB~i~A~i~iB i A i i那么我们就可以得到&#xff1a;0<B1<B2<...<Bm<mn0<B~1~<B~2~&…

【COCI 2018/2019 Round #2】Kocka

这道题也是一个ex的模拟题 不过他比Zamjena可爱 作为一个帅气的小哥哥&#xff0c;让我们一起&#xff0c; 开启你的模拟ex大门&#xff0c;C从入门到放弃&#xff01; 题目 题目描述 我又来了&#xff01;我又来了&#xff01; 在清晨来到儿童游乐园的时候&#xff0c;出题…

Matrix Equation

题意&#xff1a; 题目给出两个矩阵X,Y,现在有两种操作 Z X Y D X⊙Y 问是否存在一个矩阵C&#xff0c;使得ACB⊙C式子成立&#xff0c;问矩阵C能有多少个 题解&#xff1a; 这个式子在模2意义下的加法就等于异或 也就相当于 那现在有 将BC移到左边 然后将Ci,j的系数进…

eShopOnContainers 知多少[6]:持久化事件日志

1. 引言事件总线解决了微服务间如何基于集成事件进行异步通信的问题。然而只有事件总线正常运行&#xff0c;微服务之间基于事件的通信才得以运转。 而现实情况是&#xff0c;总有这样或那样的问题&#xff0c;导致事件总线不稳定或不可用&#xff0c;比如&#xff1a;网络中断…

多体问题

代码&#xff1a; function SunEarthMoon % M函数文件load planets; % 将planets.mat中的变量mass、position、velocity加载过来[sun, earth, moon] deal(18, 3, 25); % sun、earth、moon分别是18、3、25行 list [sun, earth, moon]; % 1行3列矩阵 G 6.67e-11; % gr…

【CF1179 A,B,C】Valeriy and Deque / Tolik and His Uncle / Serge and Dining Room

还好题很温柔&#xff0c;温柔得我差点没做完 文章目录A&#xff1a;Valeriy and Deque题意题解代码实现B&#xff1a;Tolik and His Uncle题目题解代码实现C&#xff1a;Serge and Dining Room题目题解代码实现A&#xff1a;Valeriy and Deque 题意 给定一个双端队列&#…

YBTOJ:比赛得分(期望)

文章目录题目描述解析代码题目描述 解析 不太难的题 显然本题在AB队员大小关系相反时其对答案的贡献互为相反数。 所以想到把B队队员sort一下后就可以二分找到大小关系相反的分界点 然后维护和与平方和两个前缀数组搞一搞即可O1求出贡献 总复杂度&#xff1a;nlognnlognnlogn …

Matlab与高等数学

曲线与曲面画图 平面 对于不同曲线的表达式&#xff0c;Matlab中有不同的绘图命令&#xff0c;主要有 plot, fplot, ezplot&#xff0c;plot3&#xff0c;polar&#xff0c; 曲面 1.2 曲面画图 曲面的一般方程是F(x,y,z)0&#xff0c;一般需要将曲面的点坐标先表示出来&…

[USACO19JAN,Platinum] Redistricting

[USACO19JAN,Platinum] Redistricting 这道题A了才知道。。并不难a&#xff01; orz 题目 内存限制&#xff1a;128 MiB 时间限制&#xff1a;1000 ms 题目描述 奶牛们的最大城市Bovinopolis正在重新划分势力范围—生活在那里的主要是两个品种的奶牛&#xff08;Holsteins和…