同余方程组(EXCRT)(luogu4777)】的更多相关文章

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3579 题目解析:求一元线性同余方程组的最小解X,需要注意的是如果X等于0,需要加上方程组通解的整数区间lcm(a1,a2,a3,...an). 别的就没什么注意的了. #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <math.h&…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1573 题目解析;HDU就是坑,就是因为n,m定义成了__int64就WAY,改成int就A了,无语. 这题就是求解一元线性同余方程组的解满组小于正整数n的数目.最小正整数的解为X=(X*(c/d)%t+t)%t;  X=a1*X+r1;其中X为扩展欧几里得解出来的特解,这m个方程组的循环区间为lcm(a1,a2,a3...am),所以答案为(n-X)/lcm+1; #include <iostream>…
题目链接: http://acm.hdu.edu.cn/showproblem.php? pid=1573 题目大意: 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], -, X mod a[i] = b[i], - (0 < a[i] <= 10). 思路: 先求出数组b[]中全部数的最小公倍数lcm,再求解出该一元线性同余方程组在lcm范围内的解为a.题目要 求解x是小于等于N的正整数,…
给定2n个整数a1,a2,…,ana1,a2,…,an和m1,m2,…,mnm1,m2,…,mn,求一个最小的整数x,满足∀i∈[1,n],x≡mi(mod ai)∀i∈[1,n],x≡mi(mod ai). 输入格式 第1行包含整数n. 第2..n行:每i+1行包含两个整数aiai和mimi,数之间用空格隔开. 输出格式 输出整数x,如果x不存在,则输出-1. 数据范围 1≤ai≤231−11≤ai≤231−1,0≤mi<ai0≤mi<ai 输入样例: 2 8 7 11 9 输出样例:31…
题意:Kiki 有 X 个硬币,已知 N 组这样的信息:X%x=Ai , X/x=Mi (x未知).问满足这些条件的最小的硬币数,也就是最小的正整数 X. 解法:转化一下题意就是 拓展欧几里德求解同余方程组了.我们可以得到 N 个方程:Mi*x+Ai=X.一些解释请看下面的代码. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using na…
题目:求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], -, X mod a[i] = b[i], - (0 < a[i] <= 10). 解法:先同上题一样用拓展欧几里德求出同余方程组的最后一个方程 X=ax+b,再调整 x 来求得 X 的解的个数.一些解释请看下面的代码. 注意--每次联立方程后求最小正整数解,可以提高代码速度. 1 #include<cstdio> 2 #i…
题意:Elina看一本刘汝佳的书(O_O*),里面介绍了一种奇怪的方法表示一个非负整数 m .也就是有 k 对 ( ai , ri ) 可以这样表示--m%ai=ri.问 m 的最小值. 解法:拓展欧几里德求解同余方程组的最小非负整数解.(感觉挺不容易的......+_+@) 先看前2个关系式:                       m%a1=r1 和 m%a2=r2 →                                                           …
#include<cstdio> #include<algorithm> #define ll long long using namespace std; ll k; ll a1,r1; ll a2,r2; ll x,y; ll g; void init() { scanf("%lld",&k); } void exgcd(ll a,ll b) { ) { x = ; y = ; }else { exgcd(b,a%b); ll t = x; x =…
拓展中国剩余定理 前言 记得半年前还写过关于拓展中国剩余定理的博客...不过那时对其理解还不是比较深刻,写的也比较乱. 于是趁学校复习之机,再来重温一下拓展中国剩余定理(以下简称ExCRT) 记得半年前还写过关于拓展中国剩余定理的博客...不过那时对其理解还不是比较深刻,写的也比较乱. 于是趁学校复习之机,再来重温一下拓展中国剩余定理(以下简称ExCRT) 一些理论准备 拓展欧几里得解不定方程 对于不定方程\(a*x+b*y=gcd(a,b)\),视a,b为常数,我们有一种通用的方法来求一组特解…
刚看到这个题目,有点被吓到,毕竟自己这么弱. 分析了很久,然后发现m,k都可以唯一的用d进制表示.也就是用一个ai,和很多个bi唯一构成. 这点就是解题的关键了. 之后可以发现每次调用函数f(x),相当于a(ai),b(bi)了一下.这样根据置换的一定知识,一定会出现循环,而把循环的大小看成取模,把从m->k的看成余,于是可以建立一个线性同余方程. 直接用模板解决之.. Recurrent Function Time Limit: 1000MS   Memory Limit: 65536K To…
套模板,因为要是正整数,所以处理一下x=0的情况. X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4444    Accepted Submission(s): 1439 Problem Description 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X…
第一步,和同余方程一样,转化一下 两式相减得 这就转化为了求不定方程,用exgcd 求出x,要化成最小正整数解,避免溢出 然后可以求出P出来. 这个时候要把前两个式子转化成一个式子 设求出来的是P' 则有  这个就转化成了新的m1和b1 然后就一直求下去即可 最终b1就是答案 #include<bits/stdc++.h> #define REP(i, a, b) for(register int i = (a); i < (b); i++) #define _for(i, a, b)…
链接: https://vjudge.net/problem/HDU-1573 题意: 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], -, X mod a[i] = b[i], - (0 < a[i] <= 10). 思路: 解线性同余方程组,得到\(x+k*m \leq n\). 解为\(1+(n-x)/m\). 当x为0时答案要减一. 代码: #include<iostream…
链接: https://vjudge.net/problem/POJ-2891 题意: Elina is reading a book written by Rujia Liu, which introduces a strange way to express non-negative integers. The way is described as following: Choose k different positive integers a1, a2, -, ak. For some…
题目链接:https://vjudge.net/problem/POJ-2065 题意:题目看着较复杂,实际上就是给了n个同余方程,解n个未知数. 思路:套高斯消元法的模板即可. AC代码: #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<cstdlib> using namespace std; ; int T,equ,var,MOD…
题目链接:https://vjudge.net/problem/POJ-2947 题意:转换题意后就是已知m个同余方程,求n个变量. 思路: 值得学习的是这个模板里消元用到lcm的那一块.注意题目输出的答案在[3,9]之间. AC代码: #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<cstdlib> using namespace s…
同余方程组: 先来看一道题目:有物不知其数,三三数之剩二:五五数之剩三:七七数之剩二.问物几何?  然后我们可以做如下变换,设x为所求的数. x%3=2              x ≡ a1(%m1)  ① x%5=3  ===>  x ≡ a2(%m2)  ② x%7=2              x ≡ a3(%m3) 根据前面两式可以得到 x = a1+m1y1     (1) x = a2+m2y2 两式相减得到  m1y1 - m2y2 = a2 - a1  这是一个线性不定方程,可…
http://poj.org/problem?id=2947 血泪史: CE:poj的string类型要加string库,swap不能直接交换数组 WA: x[m-1]也有可能<3啊O(≧口≦)O #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; ; int n,m; ][] = {"MON",…
http://acm.hdu.edu.cn/showproblem.php?pid=5755 题意: n*m矩阵,每个格有数字0/1/2 每选择一个格子,这个格子+2,4方向相邻格子+1 如何选择格子,可以使每个格子的数最后 %3=0 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; int n,m,t; ][]; ]; int turn(int i,int j)…
写一下自己的理解,下面附上转载的:若a==b(modk);//这里的==指的是同余,我用=表示相等(a%k=b)a-b=kt(t为整数)以前理解的错误思想:以前认为上面的形式+(a-tb=k)也是成立的,今天一想随便就能举出一个反例11==5(mod3)同样是求这个东西..X mod m1=r1X mod m2=r2.........X mod mn=rn 首先,我们看两个式子的情况X mod m1=r1……………………………………………………………(1)X mod m2=r2…………………………
Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2734    Accepted Submission(s): 1010 Problem Description One day I was shopping in the supermarket. There was a cashier counting coins…
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <stdlib.h> using namespace std; #define N 10100 /*对于x=r0(mod m0) x=r1(mod m1) ... x=rn(mod mn) 输入数组m和数组r,返回[0,[m0,m1,...,mn]-1] 范围内满足以上等…
一个exgcd解决一个线性同余问题,多个exgcd解决线性同余方程组. Strange Way to Express Integers Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 12001   Accepted: 3797 Description Elina is reading a book written by Rujia Liu, which introduces a strange way to expre…
Elina is reading a book written by Rujia Liu, which introduces a strange way to express non-negative integers. The way is described as following: Choose k different positive integers a1, a2, …, ak. For some non-negative m, divide it by every ai (1 ≤ …
Description Elina is reading a book written by Rujia Liu, which introduces a strange way to express non-negative integers. The way is described as following: Choose k different positive integers a1, a2, -, ak. For some non-negative m, divide it by ev…
原文链接https://www.cnblogs.com/zhouzhendong/p/exCRT.html 扩展中国剩余定理 (exCRT) 的证明与练习 问题模型 给定同余方程组 $$\begin{cases}x&\equiv&x_1&\pmod {p_1}\\x&\equiv&x_2&\pmod {p_2}\\ &&\vdots\\x&\equiv&x_n&\pmod {p_n}\end{cases}$$ 求解 $…
前言: 中国剩余定理又名孙子定理.因孙子二字歧义,常以段子形式广泛流传. 中国剩余定理并不是很好理解,我也理解了很多次. CRT 中国剩余定理 中国剩余定理,就是一个解同余方程组的算法. 求满足n个条件的最小的x. 看起来很麻烦. 先找一个特殊情况:$m_1,m_2,...m_n$两两互质. 这个时候,构造$M=m_1*m_2*...m_n$; 令$M_i=M/m_i$; 所以,构造$n$个数,其中第$i$个数是除$i$之外的其他所有数的倍数,并且第$i$个数$mod m_i =1$ 即:$M_…
清除一个误区 虽然中国剩余定理和拓展中国剩余定理只差两个字,但他俩的解法相差十万八千里,所以会不会CRT无所谓 用途 求类似$$\begin{cases}x \equiv b_{1}\pmod{a_{1}} \\x \equiv b_{2}\pmod{a_{2}} \\...\\x \equiv b_{n}\pmod{a_{n}} \\ \end{cases}$$的线性同余方程组的解 具体过程 假设现在我们只有两个同余方程$$x \equiv b_{1}\pmod{a_{1}}$$ $$x \e…
Description Input Output Sample Input 23 33 5 74 6 107 3 91 9 10003 23 5 64 8 71 1 11 1 Sample Output 59-1 Solution 当时同步赛的时候写出来了……只不过忘了是爆$long~long$还是小细节写爆了只有$75$…… 当时蠢的一比直接强上了一颗$splay$强行增加码量……现在觉得当时太蠢了然后就重写了一遍…… 首先对于这个题,每次使用的剑可以发现是固定的,这个可以使用$set$来求出…
题意 题目描述 给定\(n\)组非负整数\(a_i, b_i\),求解关于\(x\)的方程组 \[\begin{cases} x \equiv b_1\ ({\rm mod}\ a_1) \\ x\equiv b_2\ ({\rm mod}\ a_2) \\ ... \\ x \equiv b_n\ ({\rm mod}\ a_n)\end{cases}\]的最小非负整数解. 输入输出格式 输入格式: 输入第一行包含整数\(n\). 接下来\(n\)行,每行两个非负整数\(a_i, b_i\).…