题目链接

颓了一天 写个模板吧。。

Chinese_Remainder_Theorem: MashiroSky远航之曲

#include <cstdio>
#include <cctype>
#define gc() getchar()
typedef long long LL;
const int N=13; LL n,L,R,B[N],m[N]; inline LL read()
{
LL now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
//void Exgcd(LL a,LL b,LL &x,LL &y)
//{
// if(!b) x=1,y=0;
// else {
// Exgcd(b,a%b,x,y);
// LL t=x; x=y, y=t-a/b*y;
// }
//}
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;
}
void CRT()
{
LL M=1,res=0,x,y,Mi,ans=0,Min=0;
for(int i=1; i<=n; ++i) M*=m[i];
for(int i=1; i<=n; ++i)
{
Mi=M/m[i], Exgcd(Mi,m[i],x,y);
x=(x%m[i]+m[i])%m[i];
res+=B[i]*Mi*x;
}
res%=M;
if(!res) res=M;
if(res<=R) ans=(R-res)/M+1;//[res,R]中解的个数 //res就是最小正整数解了,>R显然[L,R]无解(L,R>0)
if(res<=L) ans-=(L-res)/M+1;//[res,L](res<=L)中解的个数 注意这里=L也要计算(减掉),因为下一行要特判边界L的解
if(!((L-res)%M)) ++ans;//边界L的解
if(ans)
if(L<=res) Min=res;//Min=res-(res-L)/M*M;//res就已是最小的解
else /*if(res<L)*/ Min=res+((L-res-1)/M+1)*M;//ans是解的个数不是要运算的数!
printf("%lld\n%lld",ans,Min);
} int main()
{
n=read(),L=read(),R=read();
for(int i=1; i<=n; ++i) m[i]=read(),B[i]=read();
CRT();
return 0;
}

CODEVS.3990.中国余数定理2(CRT)的更多相关文章

  1. Codevs 3990 中国余数定理 2

    3990 中国余数定理 2 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 白银 Silver 传送门 题目描述 Description Skytree神犇最近在研究中国博大精深的数学. ...

  2. 【codevs3990】中国余数定理2

    [题目描述]Skytree神犇最近在研究中国博大精深的数学.这时,Sci蒟蒻前来拜访,于是Skytree给Sci蒟蒻出了一道数学题:给定n个质数,以及k模这些质数的余数.问:在闭区间[a,b]中,有多 ...

  3. RSA-CRT leaks__因使用中国余数定理计算RSA所引起的私钥泄露

    在heartbleed[1]漏洞后,很多用户打开了PFS[2]功能.但很不幸,之后RedHat又报告出在多个平台上存在RSA-CRT导致的密钥泄露[3]. 中国余数定理(CRT)常被用在RSA的计算中 ...

  4. 中国余数定理 2(codevs 3990)

    题目描述 Description Skytree神犇最近在研究中国博大精深的数学. 这时,Sci蒟蒻前来拜访,于是Skytree给Sci蒟蒻出了一道数学题: 给定n个质数,以及k模这些质数的余数.问: ...

  5. 中国余数定理 1(codevs 3040)

    题目描述 Description 摘自算法导论...... 找出第k个被3,5,7除的时候,余数为2,3,2的数: 输入描述 Input Description 一个数k. 输出描述 Output D ...

  6. Codevs 3990 [中国剩余定理]

    模板题 注意如何得到[a,b]区间范围内的解 #include <iostream> #include <cstdio> #include <cstring> #i ...

  7. 「中国剩余定理CRT」学习笔记

    设正整数$m_1, m_2, ... , m_r$两两互素,对于同余方程组 $x ≡ a_1 \ (mod \ m_1)$ $x ≡ a_2 \ (mod \ m_2)$ $...$ $x ≡ a_r ...

  8. 中国剩余定理CRT(孙子定理)

    中国剩余定理 给出以下的一元线性同余方程组: $\Large(s):\left\{\begin{aligned}x\equiv a_1\ (mod\ m_1)\\x\equiv a_2\ (mod\ ...

  9. 中国剩余定理(CRT)及其扩展(EXCRT)详解

    问题背景   孙子定理是中国古代求解一次同余式方程组的方法.是数论中一个重要定理.又称中国余数定理.一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作<孙子算经>卷下第 ...

随机推荐

  1. python 历险记(二)— python 的面向对象

    目录 前言 类和对象 如何定义和实例化类? 如何定义和使用属性? 什么是方法? 静态方法和普通方法 构造函数该怎么写? str 方法怎么写? 多态是什么? 继承性和 java 是一样的吗? 父类和子类 ...

  2. maven的动态打包功能

    对于maven而言,打包是其一个非常重要的功能,不仅仅是简单的编译打包的概念,其还通过各种插件支持各种灵活的打包策略.现举一个例子讲解如何动态实现一个web项目的打包: 需求: 现需要对一个web项目 ...

  3. Shell脚本中执行sql语句操作mysql的5种方法【转】

    对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...

  4. vue的学习(常用功能)

    1.介绍vue MVP和MVVM模式!!! mvp模式,其中m是模型是ajax请求数据, v是视图层(html),p是控制器,就是使用jq来实现业务逻辑相关操作(DOM操作很多) MVVM模式,其中M ...

  5. C++11中智能指针的原理、使用、实现

    目录 理解智能指针的原理 智能指针的使用 智能指针的设计和实现 1.智能指针的作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理.程序员自己管理堆内存可以提高了程序 ...

  6. Oracle入门概述

    --学习数据库--数据查询语言:select语句--数据操纵语言:DML,增删改语句--数据定义语言:DDL,对表的增删改(会自动提交事务)--事务控制语句:commit,rollback,savep ...

  7. 错误代码 1045 Access denied for user 'root'@'localhost' (using password:YES)

    1 前言 现象是用MySQL 5.7 Command Line Client可以使用root账号进入,但是其它navicat,phpsqladmin,mysql workbench,heidisql用 ...

  8. hdu1890 splay维护区间翻转

    这题的建模有点不太一样,是按结点横坐标赋予键值的 同时每次rotate和splay时都要注意下往上往下更新 /* 先建立好splay tree,将结点按num/输入顺序排序,遍历时每次将当前结点提到根 ...

  9. Java8 容器类详解

      ArrayList Vector CopyOnWriteArrayList LinkedList HashMap ConcurrentHashMap LinkedHashMap 使用场景 随机访问 ...

  10. python 全栈开发,Day119(Flask初识,Render Redirect HttpResponse,request,模板语言 Jinja2,用户登录例子,内置Session)

    一.Flask初识 首先,要看你学没学过Django 如果学过Django 的同学,请从头看到尾,如果没有学过Django的同学,并且不想学习Django的同学,轻饶过第一部分 三大主流Web框架对比 ...