Codevs 3990 中国余数定理 2
3990 中国余数定理 2
时间限制: 1 s
空间限制: 1000 KB
题目等级 : 白银 Silver
传送门
题目描述 Description
Skytree神犇最近在研究中国博大精深的数学。
这时,Sci蒟蒻前来拜访,于是Skytree给Sci蒟蒻出了一道数学题:
给定n个质数,以及k模这些质数的余数。问:在闭区间[a,b]中,有多少个k?最小的k是多少?
Sci蒟蒻数学能力差了Skytree三条街,所以他只好寻求计算机的帮助。他发邮件给同为oier的你,你能帮他解决这个问题吗?
输入描述 Input Description
输入第一行为三个正整数n、a、b。
第2到n+1行,每行有两个整数,分别代表第n个质数和k模第n个质数的余数。
输出描述 Output Description
输出为两个整数,代表闭区间[a,b]中k的个数和闭区间[a,b]中最小的k。如果k不存在,则输出两个0。
样例输入 Sample Input
样例1:
3 2 28
3 2
5 3
7 2
样例2:
3 24 31
3 2
5 3
7 2
样例输出 Sample Output
样例1:
1
23
样例2:
0
0
数据范围及提示 Data Size & Hint
1<=a<=b<=10^14
n<=10
输入保证所有n个质数的乘积<=10^14
每个质数<=1.5*10^9
请无视通过率(被人黑了。。。)
数据保证不会溢出64bit整数
分类标签 Tags
数论 欧几里得算法 逆元
/*
中国剩余定理(exgcd+逆元)(互质版).
数学很重要.
cin很重要.
*/
#include<iostream>
#include<cstdio>
#define MAXN 11
#define LL long long
using namespace std;
LL l,r,m[MAXN],M1[MAXN],x,ans,sum,y,n,tot=1,b[MAXN],M[MAXN];
void exgcd(LL a,LL b)
{
if(!b)
{
x=1;y=0;return ;
}
exgcd(b,a%b);
LL s=x;x=y;y=s-a/b*y;
}
int main()
{
cin>>n>>l>>r;
//scanf("%I64d%I64d%I64d",&n,&l,&r);
for(int i=1;i<=n;i++) cin>>m[i]>>b[i],tot*=m[i];//①
for(int i=1;i<=n;i++) M[i]=tot/m[i];//②
for(int i=1;i<=n;i++)
{
x=y=0;
exgcd(M[i],m[i]);
M1[i]=(x+m[i])%m[i];//③
}
for(int i=1;i<=n;i++)
{
ans=(ans+M[i]*M1[i]%tot*b[i])%tot;//④//随时mod以防爆掉.
}
if(ans<l||ans>r) ans=sum=0;
else sum=(r-ans)/tot+1;
cout<<sum<<endl<<ans;;
//printf("%lld\n%lld",sum,ans);
return 0;
}
Codevs 3990 中国余数定理 2的更多相关文章
- CODEVS.3990.中国余数定理2(CRT)
题目链接 颓了一天 写个模板吧.. Chinese_Remainder_Theorem: MashiroSky.远航之曲 #include <cstdio> #include <cc ...
- 【codevs3990】中国余数定理2
[题目描述]Skytree神犇最近在研究中国博大精深的数学.这时,Sci蒟蒻前来拜访,于是Skytree给Sci蒟蒻出了一道数学题:给定n个质数,以及k模这些质数的余数.问:在闭区间[a,b]中,有多 ...
- RSA-CRT leaks__因使用中国余数定理计算RSA所引起的私钥泄露
在heartbleed[1]漏洞后,很多用户打开了PFS[2]功能.但很不幸,之后RedHat又报告出在多个平台上存在RSA-CRT导致的密钥泄露[3]. 中国余数定理(CRT)常被用在RSA的计算中 ...
- 中国余数定理 2(codevs 3990)
题目描述 Description Skytree神犇最近在研究中国博大精深的数学. 这时,Sci蒟蒻前来拜访,于是Skytree给Sci蒟蒻出了一道数学题: 给定n个质数,以及k模这些质数的余数.问: ...
- 中国余数定理 1(codevs 3040)
题目描述 Description 摘自算法导论...... 找出第k个被3,5,7除的时候,余数为2,3,2的数: 输入描述 Input Description 一个数k. 输出描述 Output D ...
- Codevs 3990 [中国剩余定理]
模板题 注意如何得到[a,b]区间范围内的解 #include <iostream> #include <cstdio> #include <cstring> #i ...
- 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 三维几 ...
随机推荐
- ubuntu下git安装及连接github
1.安装 sudo apt-get install git git-core git-gui git-doc git-svn git-cvs gitweb gitk git-email git-dae ...
- HW5.12
public class Solution { public static void main(String[] args) { printChars('1', 'Z', 10); } public ...
- Solution for When browse http://xxx/ReportServer Show Error (rsAccessDenied)
Issue: Reporting Services Error The permissions granted to user 'IDEAAM\William' are insufficient fo ...
- 怎样做出通用的pos小票打印程序
POS小票打印机分为热敏和针式俩种. 打印纸的宽度分为58毫米.76毫米和80毫米三种. 打印接口分为:串口.并口.USB和网口(以太网). 热敏打印机速度较快,打印的时候噪音少,针打可以使用多联纸自 ...
- js学习之原型prototype(一)
1.javascript中的每个引用类型(原生的.和自定义的)都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用. A.prototype ...
- Open Dynamics Engine for Linux 安装笔记
下载 在Bitbucket上可以下载到最新的版本(截止目前为0.14版) 或者直接用wget下载 wget "https://bitbucket.org/odedevs/ode/downlo ...
- iOS-iPhone系统版本号-iPhone App版本号
转载: http://blog.sina.com.cn/s/blog_7b9d64af0101bu9j.html 很多时候,我们需要获得用户iPhone版本号,或者App的当前版本号. 关心以下两个方 ...
- chrome扩展——Postman
今天须要測试一个http的接口,曾经都是使用java的httpClient工具jar,自己编写代码去调试,但这样的方式比較死板,每次都要执行一段代码...于是就像有没有类似的在线工具能够使用? 调查了 ...
- 结构体数组(C++)
1.定义结构体数组 和定义结构体变量类似,定义结构体数组时只需声明其为数组即可.如: struct Student{ int num; char name[20]; char sex[5]; int ...
- Linux select TCP并发服务器与客户端编程
介绍:运行在ubuntu linux系统,需要先打开一个终端运行服务端代码,这时,可以打开多个终端同时运行多个客户端代码(注意客户端数目要小于MAX_FD);在客户端输入数据后回车,可以看见服务器收到 ...