扩展欧几里德定理
来源:互联网 发布:少儿编程培训班 编辑:程序博客网 时间:2024/05/19 10:34
hdu 4596 Yet another end of the world
第一次接触这类题目,主要借鉴该博文 http://blog.csdn.net/pi9nc/article/details/22911885
#include<cstdio>#include<algorithm>#include<vector>#include<cmath>#include<set>#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;const int MAXN = 1005;int x[MAXN], y[MAXN], z[MAXN], n;int gcd(int a, int b){return b?gcd(b,a%b):a;}int judge(int a, int l, int r){if (l%a == 0 || r%a == 0) return 1;if (l < 0 && r > 0) return 1;if (r/a - l/a >= 1) return 1;return 0;}int solve(){for (int i = 0; i< n; ++i){for (int j = i+1; j< n; ++j){int g = gcd(x[i], x[j]);if (judge(g,y[i]-z[j],z[i]-y[j])) return 1;}}return 0;}int main(){#ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin);#endifwhile (scanf("%d", &n) != EOF){for (int i = 0; i< n; ++i) scanf("%d%d%d", x+i, y+i, z+i);if (solve()) puts("Cannot Take off");else puts("Can Take off");}return 0;}
hdu 1576 A/B
上题用扩展欧几里德定理中判别一阶不定方程是否有解,该题则在原来的基础上求方程的解;p * a + q * b = gcd(a, b) ......(0)A = 9973*c + nA = B*kn = B * k - 9973*c ......(1)∵ gcd(B, 9973) == 1∴ 方程(1)恒有解先找出一组解 p0, q0(p0为0附近最小解)则推出其他的解为:p = p0 + b/gcd(a,b)*tq = q0 + a/gcd(a,b)*t在找出第一组解 k0,c0后(k0可能小于0),ki = k0+9973*t;∵ 最后结果为 k % 9973∴ return (k0%mod + mod)%mod*n%mod#include<cstdio>#include<algorithm>#include<vector>#include<cmath>#include<set>#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;typedef __int64 ll;const ll mod = 9973;template<class T>T exGCD(T a, T b, T &x, T &y){if (b == 0){x = 1;y = 0;return a;}T r = exGCD(b,a%b,x,y);T t = x;x = y;y = t-a/b*y;return r;}int main(){#ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin);#endifint t;scanf("%d", &t);while (t--){ll n, B, k, c;scanf("%I64d%I64d", &n, &B);exGCD(B, mod, k, c);k = (k%mod + mod)%mod;printf("%I64d\n", n*k%mod);}return 0;}
0 0
- 扩展欧几里德定理
- 扩展欧几里德定理
- 扩展欧几里德定理
- pku 1061 欧几里德扩展定理
- 关于扩展欧几里德定理的题目
- POJ 2891 扩展欧几里德&&中国剩余定理
- 暑期入门训练(欧几里德定理,扩展)
- POJ 2115(扩展欧几里德定理)
- 除法求逆元(扩展欧几里德和费马小定理)
- 除法求逆元(扩展欧几里德和费马小定理)
- 扩展欧几里德定理--------乘法逆元
- HDU 4180_ RealPhobia (扩展欧几里德定理)
- 【中国剩余定理 && 扩展欧几里德】 POJ
- 欧几里德辗转相除法 费马小定理 欧拉定理 扩展欧几里德算法简介
- 扩展欧几里德算法 线性同余方程 中国剩余定理
- pku1061(扩展欧几里德算法,中国剩余定理,模线性方程)
- 扩展欧几里德算法 线性同余方程 中国剩余定理
- 扩展欧几里德 中国剩余定理 合并模线性方程组
- 学习笔记 Java_多线程 2014.7.17
- SVN目录概要设计
- kjgfsajksadljklsjdjsjjfsdkl;jlkj
- linux C++ 有名管道
- 打印给定年月的日历
- 扩展欧几里德定理
- 网曝那英携女现身加拿大 破天后涉毒传闻
- HDU 1059 Dividing(一维背包)
- 导航控件2
- 5.4.5 Binary Tree Maximum Path Sum
- poj 1177 矩形并的周长
- linux使用移动硬盘
- 【足迹C++primer】46、动态存储类
- K&R The C Programming language 2