题目描述 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整数

/*
中国剩余定理
第一次求的ans是最小正整数解
*/
#include<cstdio>
#include<iostream>
#define N 15
#define LL long long
using namespace std;
LL M[N],m[N],t[N],a[N],sum=,x,y,la,lb,ans;
int n;
void e_gcd(LL a,LL b,LL &x,LL &y)
{
if(b==)
{
x=;y=;
return;
}
e_gcd(b,a%b,x,y);
LL t=x;x=y;y=t-a/b*y;
}
int main()
{
cin>>n>>la>>lb;
for(int i=;i<=n;i++)
{
cin>>m[i]>>a[i];
sum*=m[i];
}
for(int i=;i<=n;i++)
{
M[i]=sum/m[i];
e_gcd(M[i],m[i],x,y);
t[i]=(x+m[i])%m[i];
ans=((ans+(a[i]%sum)*(t[i]%sum)*(M[i]%sum))%sum);
}
LL tot=;
while(ans<la)ans+=sum;
LL temp=ans;
while(ans<=lb)
{
ans+=sum;
tot++;
}
if(!tot)temp=;
cout<<tot<<endl<<temp;
return ;
}

最新文章

  1. 写在MongoCola在Github上获得200个Star之后
  2. [IOC]Unity使用
  3. oracle表空间不足相关问题解决办法
  4. visual studio 2013 中常用的一些快捷键
  5. apache配置常用模块
  6. php-fpm占用系统资源分析
  7. Spring框架的初步学习
  8. jquery 之选择符
  9. 静态html传参数
  10. PHP+AJAX 地区三级联动代码
  11. python中的lambda函数用法
  12. Python小技巧:运行目录或ZIP文件
  13. MySQL中间件之ProxySQL(5):线程、线程池、连接池
  14. TIJ -- 任务间使用管道进行输入/输出
  15. A1067. Sort with Swap(0,*)
  16. flutter 环境安装以及配置
  17. V-rep学习笔记:外部函数调用方式
  18. [AaronYang] 敏捷开发 教程目录
  19. ALGO-4_蓝桥杯_算法训练_结点选择
  20. Linux开篇

热门文章

  1. 洛谷 2299 Mzc和体委的争夺战
  2. js 前端不调接口直接下载图片
  3. JS中的事件、事件冒泡和事件捕获、事件委托
  4. 基于Passthru的NDIS开发的个人理解
  5. WebAssembly MDN简单使用
  6. ZJOI2018游记Round2
  7. sql 表连接的3种类型
  8. 关于ajax在微信智能客服管理端的使用
  9. SpringBoot 多线程
  10. HDU 3507 斜率优化 DP Print Article