POJ2891:Strange Way to Express Integers——题解

时间:2022-04-06 02:34:45

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/details/50527894)

显然对于x=r(mod a)

我们有:

x+y1a1=r1①

x-y2a2=r2②

x-y3a3=r3③

……

①②相减得:

y1a1+y2a2=r1-r2

我们就有了标准的exgcd的方程了。

不能解就是-1

否则我们能求出其中一个y1,将其化为最小值后,带入①得到

x0=r1-y1a1

这是x的其中一个解,全解为

x=x0+k*lcm(a1,a2)

x=x0(mod lcm(a1,a2))

则:

x+y3*lcm(a1,a2)=x0④

③④再联立,重复以上过程即可。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cctype>
using namespace std;
typedef long long ll;
inline ll read(){
ll X=,w=; char ch=;
while(!isdigit(ch)) {w|=ch=='-';ch=getchar();}
while(isdigit(ch)) X=(X<<)+(X<<)+(ch^),ch=getchar();
return w?-X:X;
}
ll exgcd(ll a,ll b,ll &x,ll &y){
if(b==){
x=;y=;
return a;
}
ll r=exgcd(b,a%b,x,y);
ll temp;
temp=x;
x=y;
y=temp-(a/b)*y;
return r;
}
ll a[],r[];
int main(){
int k;
while(scanf("%d",&k)!=EOF){
bool ok=;
for(int i=;i<=k;i++){
a[i]=read();
r[i]=read();
}
ll a1=a[],r1=r[];
for(int i=;i<=k;i++){
ll A=a1,B=a[i],C=r1-r[i];
ll x,y;
ll g=exgcd(A,B,x,y);
if(C%g){
printf("-1\n");
ok=;
break;
}
x=C/g*x%a[i];
r1=r1-x*a1;
a1=a1*a[i]/g;
}
if(ok)continue;
printf("%lld\n",(r1%a1+a1)%a1);
}
return ;
}

POJ2891:Strange Way to Express Integers——题解的更多相关文章

  1. POJ2891——Strange Way to Express Integers&lpar;模线性方程组&rpar;

    Strange Way to Express Integers DescriptionElina is reading a book written by Rujia Liu, which intro ...

  2. POJ2891 Strange Way to Express Integers

    题意 Language:Default Strange Way to Express Integers Time Limit: 1000MS Memory Limit: 131072K Total S ...

  3. POJ2891 Strange Way to Express Integers 扩展欧几里德 中国剩余定理

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ2891 题意概括 给出k个同余方程组:x mod ai = ri.求x的最小正值.如果不存在这样的x, ...

  4. POJ2891 - Strange Way to Express Integers(模线性方程组)

    题目大意 求最小整数x,满足x≡a[i](mod m[i])(没有保证所有m[i]两两互质) 题解 中国剩余定理显然不行....只能用方程组两两合并的方法求出最终的解,刘汝佳黑书P230有讲~~具体证 ...

  5. P4777 【模板】扩展中国剩余定理(EXCRT)&sol; poj2891 Strange Way to Express Integers

    P4777 [模板]扩展中国剩余定理(EXCRT) excrt模板 我们知道,crt无法处理模数不两两互质的情况 然鹅excrt可以 设当前解到第 i 个方程 设$M=\prod_{j=1}^{i-1 ...

  6. POJ2891 Strange Way to Express Integers &lbrack;中国剩余定理&rsqb;

    不互质情况的模板题 注意多组数据不要一发现不合法就退出 #include <iostream> #include <cstdio> #include <cstring&g ...

  7. POJ2891 Strange Way to Express Integers【扩展中国剩余定理】

    题目大意 就是模板...没啥好说的 思路 因为模数不互质,所以直接中国剩余定理肯定是不对的 然后就考虑怎么合并两个同余方程 \(ans = a_1 + x_1 * m_1 = a_2 + x_2 * ...

  8. &lbrack;poj2891&rsqb;Strange Way to Express Integers&lpar;扩展中国剩余定理&rpar;

    题意:求解一般模线性同余方程组 解题关键:扩展中国剩余定理求解.两两求解. $\left\{ {\begin{array}{*{20}{l}}{x = {r_1}\,\bmod \,{m_1}}\\{ ...

  9. poj2891 Strange Way to Express Integers poj1006 Biorhythms 同余方程组

    怎样求同余方程组?如: \[\begin{cases} x \equiv a_1 \pmod {m_1} \\ x \equiv a_2 \pmod {m_2} \\ \cdots \\ x \equ ...

随机推荐

  1. 【BZOJ-3437】小P的牧场 DP &plus; 斜率优化

    3437: 小P的牧场 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 705  Solved: 404[Submit][Status][Discuss ...

  2. Spring中ApplicationContext对事件的支持

    Spring中ApplicationContext对事件的支持   ApplicationContext具有发布事件的能力.这是因为该接口继承了ApplicationEventPublisher接口. ...

  3. ecshop中user&period;php中的&dollar;user说明---user表加字段

    今天想对user表加个字段,打开user.php发现有个$user,其中它有很多方法,像登陆,注册,退出.都要用到它.可找了大半天也找不到这个函数调用的是哪个类.又坚持找了半天,发现$user在ini ...

  4. hdu 1348 (凸包求周长)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1348 Wall Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  5. JAVA标签的使用跳出循环

    public static void main(String args[]) { int i=10,j=10; outer: while (i > 0) { inner: while (j &g ...

  6. noj &lbrack;1480&rsqb; 懒惰的风纪委Elaine &lpar;多重背包&rpar;

    http://ac.nbutoj.com/Problem/view.xhtml?id=1480 [1480] 懒惰的风纪委Elaine 时间限制: 1000 ms 内存限制: 65535 K 问题描述 ...

  7. 关于Java(常用数据类型)

    工作中,除非特殊需要,一般使用的数据类型较为单一. int int 是最常用的类型之一,一般能满足判断或循环的需求 float 或 double 两个浮点类型,可以在一定程度上确保数据的精度 BigD ...

  8. 初探ListView

    ListView可能是Android开发中最常用的一个控件,但要用的纯熟还需要不断的锻炼. 建立简单的ListView 1.在布局文件(.xml)中添加<ListView>标签 2.在Ma ...

  9. Window下通过charles代理抓取iphone&sol;android手机Https请求乱码问题处理

    Window下通过charles代理抓取iphone手机Https请求乱码问题 如果保持默认设置,https的reqeust和response都是乱码,设置完之后https就可以抓包了 手机端操作: ...

  10. PAT 1035 Password

    1035 Password (20 分)   To prepare for PAT, the judge sometimes has to generate random passwords for ...