【codevs3990】中国余数定理2
【题目描述】
Skytree神犇最近在研究中国博大精深的数学。
这时,Sci蒟蒻前来拜访,于是Skytree给Sci蒟蒻出了一道数学题:
给定n个质数,以及k模这些质数的余数。问:在闭区间[a,b]中,有多少个k?最小的k是多少?
Sci蒟蒻数学能力差了Skytree三条街,所以他只好寻求计算机的帮助。他发邮件给同为oier的你,你能帮他解决这个问题吗?
【题解】
用中国剩余定理求出最小的k,然后k+M*y都是可能的值,所以个数就是(b-k)/M+1
注意在统计答案时,由于模数M可能过大,要使用快速乘。
/*************
CODEVS 3990
by chty
2016.11.1
*************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n,l,r,ans,M(),a[],m[];
inline ll read()
{
ll x=,f=; char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-; ch=getchar();}
while(isdigit(ch)) {x=x*+ch-''; ch=getchar();}
return x*f;
}
void exgcd(ll a,ll b,ll &x,ll &y)
{
if(b==) {x=; y=; return;}
exgcd(b,a%b,x,y);
ll t=x;x=y;y=t-a/b*y;
}
ll mul(ll x,ll y){return ((x*y-(ll)(((long double)x*y+0.5)/M)*M)%M+M)%M;}//一行快速乘
int main()
{
freopen("cin.in","r",stdin);
freopen("cout.out","w",stdout);
n=read(); l=read(); r=read();
for(ll i=;i<=n;i++) m[i]=read(),a[i]=read(),M*=m[i];
for(ll i=;i<=n;i++)
{
ll x,y,Mi=M/m[i];
exgcd(Mi,m[i],x,y);
ans=(ans+mul(mul(x,Mi),a[i]))%M;
}
if(ans<l||ans>r) printf("0\n0\n");
else printf("%lld\n%lld\n",(r-ans)/M+,ans);
}
【codevs3990】中国余数定理2的更多相关文章
- Codevs 3990 中国余数定理 2
3990 中国余数定理 2 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 白银 Silver 传送门 题目描述 Description Skytree神犇最近在研究中国博大精深的数学. ...
- RSA-CRT leaks__因使用中国余数定理计算RSA所引起的私钥泄露
在heartbleed[1]漏洞后,很多用户打开了PFS[2]功能.但很不幸,之后RedHat又报告出在多个平台上存在RSA-CRT导致的密钥泄露[3]. 中国余数定理(CRT)常被用在RSA的计算中 ...
- 中国余数定理 2(codevs 3990)
题目描述 Description Skytree神犇最近在研究中国博大精深的数学. 这时,Sci蒟蒻前来拜访,于是Skytree给Sci蒟蒻出了一道数学题: 给定n个质数,以及k模这些质数的余数.问: ...
- CODEVS.3990.中国余数定理2(CRT)
题目链接 颓了一天 写个模板吧.. Chinese_Remainder_Theorem: MashiroSky.远航之曲 #include <cstdio> #include <cc ...
- 中国余数定理 1(codevs 3040)
题目描述 Description 摘自算法导论...... 找出第k个被3,5,7除的时候,余数为2,3,2的数: 输入描述 Input Description 一个数k. 输出描述 Output D ...
- 数论知识总结——史诗大作(这是一个flag)
1.快速幂 计算a^b的快速算法,例如,3^5,我们把5写成二进制101,3^5=3^1*1+3^2*2+3^4*1 ll fast(ll a,ll b){ll ans=;,a=mul(a,a)))a ...
- poj 算法 分类
转载请注明出处:優YoU http://blog.csdn.net/lyy289065406/article/details/6642573 最近AC题:2528 更新时间:2011.09.22 ...
- acm算法模板(2)
数学问题: 1.精度计算——大数阶乘 2.精度计算——乘法(大数乘小数) 3.精度计算——乘法(大数乘大数) 4.精度计算——加法 5.精度计算——减法 6.任意进制转换 7.最大公约数.最小公倍数 ...
- acm算法模板(1)
1. 几何 4 1.1 注意 4 1.2 几何公式 4 1.3 多边形 6 1.4 多边形切割 9 1.5 浮点函数 10 1.6 面积 15 1.7 球面 16 1.8 三角形 17 1.9 三维几 ...
随机推荐
- 哥伦比亚大学 Columbia University Image Library (COIL-20) 数据集
转自:http://blog.csdn.net/garfielder007/article/details/51480820,这个人博客里面有不错的 数据集,http://blog.csdn.net/ ...
- 毕业生、程序猿转岗该如何选择Java、大数据和VR?
许久不见的朋友请我吃饭,期间给我介绍他一个弟弟,说明年要毕业了,还不知道找啥工作,说有培训机构让他学VR.大数据什么的,不知道前景咋样,想咨询一下我.相信很多朋友面临毕业,都不知道该从事哪个行业,自己 ...
- volatile与const综合分析
在C/C++ 编程中,volatile与const关键字一向容易让人困惑,当然,新手可能从来不用,但是 在高质量和稳健的程序中,这两个关键字 是相当重要的. 相比const,volatile关键字的发 ...
- C/C++ 安全编码 —— 指针与内存
1. 仿踩内存 if (buf[len - 1] != 0x5A) { return; }
- CSS书写格式
转自: https://segmentfault.com/a/1190000005046830 CSS书写格式 1.格式化代码 1.1文件 [建议]:CSS文件使用无BOM的UTF-8编码 1.2缩进 ...
- call()方法和apply()方法用法总结
1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法. 2. 相同点:这两个方法的作用是一样的. 都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖 ...
- element resetFields 方法报错
resetFields 对整个表单进行重置,将所有字段值重置为初始值并移除校验结果:如果用了之后报错如下: 查了下资料,是DOM加载的顺序问题: 解决方法: this.$nextTick(() =& ...
- #51单片机#超声波测距(HC-SR04)的使用方法
#51单片机#超声波测距(HC-SR04)的使用方法
- dataView 工具栏
option = { tooltip : { trigger: 'axis' }, legend: { data:['最高','最低'] }, toolbox: { show : true, orie ...
- find 使用指南
find 使用方法整理 -name 按照文件名查找文件. -perm 按照文件权限来查找文件. -user 按照文件属主来查找文件. -group 按照文件所属的组来查找文件. - n表示文件 ...