codevs3990
2024-06-30 05:29:21
中国剩余定理(孙子定理)模板
在《初等数论》上有详细的解析
这是关于模数两两互质的情况
#include<algorithm> #include<iostream> #include<cmath> #include<cstdio> using namespace std; #define LL long long LL k,l,r,n,M,x,y,Min,ans,m[15],c[15];void exgcd(LL a,LL b,LL &x,LL &y){if(!b){x=1;y=0;}else exgcd(b,a%b,y,x),y-=(a/b)*x; } int main(){scanf("%lld%lld%lld",&k,&l,&r);M=1LL;for(int i=1;i<=k;i++){scanf("%lld%lld",&m[i],&c[i]);M*=m[i];}for(int i=1;i<=k;i++){LL a=M/m[i],b=m[i];exgcd(a,b,x,y);x=(x%b+b)%b;n+=c[i]*a*x;n%=M;}n%=M;if(r>=n)ans=(r-n)/M+1;if(l>=n)ans=ans-((l-n)/M+1);if((l-n)%M==0)++ans;if(ans){if(l<=n)Min=n;else Min=n+((l-n)/M+1)*M;}printf("%lld\n%lld\n",ans,Min); }
转载于:https://www.cnblogs.com/MikuKnight/p/9040164.html
codevs3990相关推荐
- 数论知识总结——史诗大作(这是一个flag)
1.快速幂 计算a^b的快速算法,例如,3^5,我们把5写成二进制101,3^5=3^1*1+3^2*2+3^4*1 1 ll fast(ll a,ll b){ll ans=1;for(;b;b> ...
最新文章
- 如何打造BCH使用的刚性需求?
- shell编程之数学运算
- MM模块几个移动类型之间的区别
- MATLAB信号处理工具箱函数列表分类
- 小明分享:SSD201/202系统烧录篇,多种烧录方式,小明都做了分享,有需要的小伙伴拿走不谢哈!更多资料需求可以关注我,我是启明云端的小明MM!
- 摄像头poe供电原理_弱电知识之六:跟我学做监控,认识POE交换机与POE监控摄像头...
- spark-1.6.0-cdh5.15.1环境搭建:Local模式和StandAlone
- 随机变量X与随机变量函数Y=g(X)的概率分布
- 场景模型驱动自动化测试在盒马的探索及实践
- qtp12版本下载安装破解教程
- Milvus加入LF AI孵化,立志成为最流行的AI数据平台
- linux下组管理命令详解
- Mac 10.11下成功安装Wex5及文件扩展属性问题
- python 并发编程实战_使用Python进行并发编程
- 【C语言】—— 通讯录
- DRAM内存物理地址和地址译码器原理的剖析
- php生成网页快照图片,PHP100精华:PHP生成网页快照_PHP教程
- python h5py详解
- 最新抖音X-Bogus、msToken、_signature、ttwid、webid分析(2023-04-12)
- 2017蓝桥杯B组国赛 瓷砖样式