poj 2891 Strange Way to Express Integers

原创 2013年12月02日 12:02:32

           线性同余方程模板。求x满足,x%ai = ri。

#include<algorithm>
#include<iostream>
#include<cstring>
#include<vector>
#include<cstdio>
#include<cmath>
#include<map>
#define LL long long
#define REP(i, n) for(int i = 0; i < n; i ++)
#define CLR(a, b) memset(a, b, sizeof(a))
using namespace std;

void Ex_gcd(LL a, LL b, LL& d, LL& x, LL& y)
{
    if(!b) {d = a; x = 1; y = 0;}
    else {Ex_gcd(b, a % b, d, y, x); y -= x * (a / b); }
}

int main()
{
    int n;
    LL a1, r1, a2, r2, ans, a, b, c, d, x, y;
    while(scanf("%d", &n) != EOF)
    {
        bool flag = true;
        scanf("%I64d%I64d", &a1, &r1);
        for(int i = 1; i < n; i ++)
        {
            scanf("%I64d%I64d", &a2, &r2);
            if(!flag) continue;
            a = a1, b = a2, c = r2 - r1;
            Ex_gcd(a, b, d, x, y);
            if(c % d != 0) flag = false;
            int t = b / d;
            x = (x * (c / d) % t + t) % t;
            r1 = a1 * x + r1;
            a1 = a1 * (a2 / d);
        }
        if(!flag) puts("-1");
        else printf("%I64d\n", r1);
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。转载请标注:blog.csdn.net/ok_again

相关文章推荐

【数论】poj2891 Strange Way to Express Integers(一般模线性方程组)

来源:http://www.cnblogs.com/Missa/archive/2013/06/01/3112536.html 不满足中国余数定理,一般模线性方程组 /**********...

中国剩余定理 poj 2891 Strange Way to Express Integers

对于同余方程组:       x=a1 (mod m1);   1       x=a2 (mod m2);    2       方程组有一个小于m(m1,m2的最小公倍数)的非负整数解的充分...

poj2891 Strange Way to Express Integers(中国剩余定理)

Strange Way to Express Integers Time Limit: 1000MS   Memory Limit: 131072K Total Sub...
  • z8110
  • z8110
  • 2016年04月26日 17:31
  • 247

【poj2891】 Strange Way to Express Integers

poj.org/problem?id=2891 (题目链接)题意:求解线性同余方程组,不保证模数一定两两互质。Solotion   用exgcd将俩个同余方程合并成一个      如合...

POJ-2891 Strange Way to Express Integers (数论:扩展欧几米德定理)

POJ-2891 Strange Way to Express Integers(扩展欧几米德定理)题意: 已知 k组数据ai,ri,求满足 x≡ri(mod ai)的最小值x min...

poj 2891 Strange Way to Express Integers 扩欧解模线性方程

题意:k对数(a,r)问是否能找到m%ai=ri.能找到输出最小的m,否则输出-1 思路: m%a1=r1 (1 m%a2=r2 (2 m%a3=r3 (3 。 m%ak=rk a,r均为任意输入。不...

POJ 2891-Strange Way to Express Integers(扩展欧几里德)

题目地址:POJ 2891 题意:给你k组同余关系,每组包含一个ai和ri,让你找出一个最小的数m,满足m%a1=r1,m%a2=r2.......m%ak=rk。 思路:纵观上述公式,很熟悉,其...

POJ 2891 Strange Way to Express Integers

欧几里德扩展定理解不互素的中国剩余定理

poj 2891 Strange Way to Express Integers(扩展欧几里得,中国剩余定理)

题意:给出x%a1,x%a2……x%ak的余数r1,r2,r3……rk,求满足要求的最小的x的值。 思路:首先,满足第一个的最小解x1=r1,我们不妨先假设解为x=r1,对于第二个方程 x%a2=r...
  • qian99
  • qian99
  • 2014年02月06日 22:05
  • 500

lightoj 1319 - Monkey Tradition 中国剩余定理(孙子定理)+poj 2891 Strange Way to Express Integers

#include #include #include #include using namespace std; #define LL long long LL p[13],r[13],n; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 2891 Strange Way to Express Integers
举报原因:
原因补充:

(最多只允许输入30个字)