poj2891】的更多相关文章

http://poj.org/problem?id=2891 (题目链接) 题意 求解线性同余方程组,不保证模数一定两两互质. Solotion 一般模线性方程组的求解,详情请见:中国剩余定理 细节 注意当最后发现方程无解直接退出时,会导致有数据没有读完,然后就会Re,所以先用数组将所有数据存下来. 代码 // poj2891 #include<algorithm> #include<iostream> #include<cstdlib> #include<cst…
Strange Way to Express Integers DescriptionElina 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 n…
同余方程组 例题1:pku2891Strange Way to Express Integers 中国剩余定理求的同余方程组mod 的数是两两互素的.然而本题(一般情况,也包括两两互素的情况,所以中国剩余定理成为了“时代的眼泪”)mod的数可能不是互素,所以要转换一下再求. P=b1(mod a1);  P / a1 ==?~~~~b1 P =b2(mod a2); P =b3(mod a3); …… P =bn(mod an); a1~an,b1~bn是给出来的. 解: 第一条:a1*x+b1…
P4777 [模板]扩展中国剩余定理(EXCRT) excrt模板 我们知道,crt无法处理模数不两两互质的情况 然鹅excrt可以 设当前解到第 i 个方程 设$M=\prod_{j=1}^{i-1}b[j]$ ,$ res$是前$ i-1 $个方程的最小解 则$ res+x*M$ 是前 $i-1 $个方程的通解 那么我们求的就是 $res+x*M ≡ a[i] (mod b[i])$ $<=> x*M - y*b[i] = a[i]-res$ 用exgcd求出的解为 t (当且仅当 gcd…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ2891 题意概括 给出k个同余方程组:x mod ai = ri.求x的最小正值.如果不存在这样的x,那么输出-1.不满足所有的ai互质. 题解 UPD(2018-08-07): 本题做法为扩展中国剩余定理. 我写了一篇证明:链接:https://www.cnblogs.com/zhouzhendong/p/exCRT.html 代码就不要看了,很久之前写的,太丑了. 代码 #include <cs…
[POJ2891]Strange Way to Express Integers(拓展CRT) 题面 Vjudge 板子题. 题解 拓展\(CRT\)模板题. #include<iostream> #include<cstdio> using namespace std; #define ll long long #define MAX 111111 ll exgcd(ll a,ll b,ll &x,ll &y) { if(!b){x=1,y=0;return a;…
0.引子 每一个讲中国剩余定理的人,都会从孙子的一道例题讲起 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何? 1.中国剩余定理 引子里的例题实际上是求一个最小的x满足 关键是,其中r1,r2,--,rk互质 这种问题都有多解,每一个解都为最小的解加上若干个lcm(r1,r2,...,rk),这个不用我证了吧(-_-||) 解决这个问题的方法是构造法, 先构造k个数 满足, 这样就保证 ,但是由于 bi 乘了除 ri 以外所有 r,所以bi模其它的 r 都为 0, 再把所有 b…
//Accepted 164 KB 16 ms //拓展欧几里得 //m=a1*x+b1 --(1) //m=a2*(-y)+b2 --(2) //->a1*x+a2*y=b2-b1 //由欧几里得算法可得上式的解 //由a*x+b*y=gcd(a,b) //可得a(x+b)+b(y-a)=gcd(a,b) //所以最小正整数解x=(x%b+b)%b; //现考虑由(1)(2)两式得到的解m //有x=m mod (a1*a2/gcd(a1,a2)) //m是最小正整数解,m+a1*a2/gcd…
这道题就是扩展的中国剩余定理(模数不互质) 首先我们回忆一下中国剩余定理对于给定n个方程组x≡ai(mod pi) 令m=∏pi wi=m/pi,然后求解关于hi,ri的方程wi*hi+pi*ri=1 令ei=wi*hi,则x≡∑eiai (mod m) 简单的验证一下,拿每个pi去模x, 因为除了wi意外,其他wj都是pi的倍数,很容易发现是复合条件的 但是当pi不互质时,上述就失效了,所以我们不能再用中国剩余定理 我们就觉得办法是用增量法,假设现在已经得到满足前k个同余方程的最小解ans 对…
题意: 给出n个模方程x=a(mod r) 求x的最小解 题解: 这就是个线性模方程组的模版题- - 但是有一些要注意的地方 extgcd算出来的解x可能负数  要让x=(x%mo+mo)%mo 而且mo不是等于lcm(r1,r2) 而是r2/gcd(r1,r2) 代码: #include <cstdio> typedef long long ll; ll n,a,r; ll extgcd(ll &x,ll &y,ll a,ll b){ if (!b){ x=,y=; retu…
题目大意 求最小整数x,满足x≡a[i](mod m[i])(没有保证所有m[i]两两互质) 题解 中国剩余定理显然不行....只能用方程组两两合并的方法求出最终的解,刘汝佳黑书P230有讲~~具体证明和实现我是参考此大神的 代码: #include<iostream> using namespace std; #define MAXN 100000 typedef long long LL; LL m[MAXN],a[MAXN]; void extended_gcd(LL a,LL b,LL…
Strange Way to Express Integers Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 8176   Accepted: 2439 Description Elina is reading a book written by Rujia Liu, which introduces a strange way to express non-negative integers. The way is…
不互质情况的模板题 注意多组数据不要一发现不合法就退出 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; inline ll read(){ ,f=; ;c=getchar();} +c-';c=getchar();} re…
题目链接 [VJ传送门] 题目描述 给你\(a_1...a_n\)和\(m_1...m_n\),求一个最小的正整数\(x\),满足\(\forall i\in[1,n] \equiv a_i(mod \ mi)\). 分析 很显然,中国剩余定理无法解决\(m_i\)之间非互质的问题. 需要用\(exCRT\). 假设\(x\)是前\(k-1\)个方程推出来的答案,那么第一个方程可以直接得出自己的答案就是\(a_1\). 设\(M=lcm(m_1,m_2...m_{k-1})\),那么显然得到\(…
题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1079 一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K.例如,K % 2 = 1, K % 3 = 2, K % 5 = 3.符合条件的最小的K = 23. 收起   输入 第1行:1个数N表示后面输入的质数及模的数量.(2 <= N <= 10) 第2 - N + 1行,每行2个数P和M,中间用空格分隔,P是质数,M是K % P的结果.(2 <…
求a1x1+r1=y...anxn+rn=y,crt合并 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) //#pragma GCC optimize("unroll-loops") //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize("Ofast,no-stack…
写一下自己的理解,下面附上转载的:若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…………………………
题意 Language:Default Strange Way to Express Integers Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 21651 Accepted: 7266 Description Elina is reading a book written by Rujia Liu, which introduces a strange way to express non-negative inte…
题目大意 就是模板...没啥好说的 思路 因为模数不互质,所以直接中国剩余定理肯定是不对的 然后就考虑怎么合并两个同余方程 \(ans = a_1 + x_1 * m_1 = a_2 + x_2 * m_2\) \(x_1 * m_1 + x_2 * m_2 = a _ 2 - a _ 1\)(因为正负号没影响嘛) 然后就可以exgcd解出来\(x_1, x_2\), 最后就可以得到\(x' = a_1 + x_1 * m_1, m' = lcm(m_1, m_2)\) 然后就不停合并就可以了…
http://poj.org/problem?id=2891 题目大意: k个不同的正整数a1,a2,...,ak.对于一些非负m,满足除以每个ai(1≤i≤k)得到余数ri.求出最小的m. 输入和输出中的所有整数都是非负数,可以用64位整数类型表示. —————————————— 首先我们打眼一看可能是孙子定理. 但是我们无法保证a一定互质. 那么显然就要用我们的可爱的exgcd啦! (下面题解根据这位大佬所懂http://blog.csdn.net/zmh964685331/article/…
一个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…
题意:求解一般模线性同余方程组 解题关键:扩展中国剩余定理求解.两两求解. $\left\{ {\begin{array}{*{20}{l}}{x = {r_1}\,\bmod \,{m_1}}\\{x = {r_2}\,\bmod \,{m_2}}\end{array}} \right.$ 为了代码的符号清晰,将转化后的系数都为正,故如下设方程. $\left\{ {\begin{array}{*{20}{l}}{x = {r_1} - {k_1}{m_1}}\\{x = {r_2} + {k…
怎样求同余方程组?如: \[\begin{cases} x \equiv a_1 \pmod {m_1} \\ x \equiv a_2 \pmod {m_2} \\ \cdots \\ x \equiv a_n \pmod {m_n} \end{cases}\] 不保证 \(m\) 两两互素? 两两合并! 比方说 \[\begin{cases} x \equiv a_1 \pmod {m_1} \\ x \equiv a_2 \pmod {m_2} \\ \end{cases}\] 就是 \[…
本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia 题目大意 求解一组同余方程 x ≡ r1 (mod a1) x ≡ r2 (mod a2) x ≡ r3 (mod a3) ...... x ≡ rk (mod ak) 的解x(a1,a2,a3,.....ak 并不一定互质).如果不存在则输出-1. 输入格式 有多组数据,每组数组第一行为k,后面有k行,每行两个数,代表ai,ri. 输出格式 每一行对应每一个询问的解x. 样例输入 2 8 7 11…
Strange Way to Express Integers Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 17321   Accepted: 5828 Description Elina is reading a book written by Rujia Liu, which introduces a strange way to express non-negative integers. The way is…
放一个写的不错的博客:https://www.cnblogs.com/zwfymqz/p/8425731.html POJ好像不能用__int128. #include <iostream> #include <stdio.h> typedef long long ll; const int maxn=1e6+10; ll m[maxn],r[maxn]; void exgcd(ll a,ll b,ll &x,ll &y) { if (b==0) { x=1; y=…
一.代码: 1.求逆元(原理貌似就是拓展欧几里得,要求MOD是素数): int inv(int a) { if(a == 1) return 1; return ((MOD - MOD / a) * inv(MOD % a)) % MOD; } 2.底层优化(正确性未验证): int cmp(int a) {if (!a) return 0; return a < 0 ? -1 : 1;} int cmp(int a) {return (a >> 31) + (-a >> 3…
ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜鸟之作,大牛勿喷,如有不当或补充之处,欢迎指出. 本建议书分为三个阶段,大一.大二.大三.大四暂没整理,一方面是大四要面临考验和找工作的问题,坚持继续acm的很少,另一方面,本人还没大四…… 下面以个人经验分析一下这三个阶段建议学习的内容和具体的训练计划. 正文: 大一(第一阶段): 大一是时间最充…
http://poj.org/problem?id=2891 题意:与中国剩余定理不同,p%ai=bi,此处的ai(i=1 2 3 ……)是不一定互质的,所以要用到的是同余方程组,在网上看到有人称为拓展中国剩余定理. 具体讲解可以看我昨天的博文:http://www.cnblogs.com/KonjakJuruo/p/5176417.html //poj2891 #include<cstdio> #include<cstdlib> #include<cstring> #…
(Step2-500题)POJ训练计划+SGU 经过Step1-500题训练,接下来可以开始Step2-500题,包括POJ训练计划的298题和SGU前两章200题.需要1-1年半时间继续提高解决问题和编码实现能力,加油ACMer!任重道远  Step1-500题 UVaOJ+算法竞赛入门经典+挑战编程+USACO 请见:http://acm.sdut.edu.cn/bbs/read.php?tid=5321 一.POJ训练计划 Moon修订  298道题   集训第一天 POJ纯水题 = =:…