同余问题
Hearthougan
这个作者很懒,什么都没留下…
展开
-
poj 2769
同余问题:#include #include #include using namespace std;const int MAXN = 310;int main(){ bool p[100010]; int arr[MAXN]; int T; cin>>T; while(T--) { int n;原创 2013-12-10 13:04:49 · 863 阅读 · 0 评论 -
The Balance POJ 2142
#include #include #include #include using namespace std;typedef long long LL;const int INF = 100000000;LL fabs(LL a){ if( a < 0 ) return (-a); else return a;}原创 2014-02-23 16:02:22 · 675 阅读 · 0 评论 -
poj 2142 The Balance
本题是求ax + by = c 的一组解,要求|x| + |y| 尽可能小,若存在相等,则使a * |x| + b * |y| 尽可能小;如果x b0, |x| + |y| = |x0 + (b/d)*t| + |y0 - (a/d) * t|,因此最小值在|y0 - (a/d) * t|附近。#include #include #include #include #include原创 2014-01-05 18:07:21 · 690 阅读 · 0 评论 -
hdu 3579 Hello Kiki
题目:点击打开题目#include #include #include using namespace std;typedef long long LL;const int MAXN = 10;LL Gcd(LL a, LL b){ return b == 0 ? a : Gcd(b, a%b);}void Ex_Gcd(LL a, LL b, LL &d,原创 2013-12-20 14:35:37 · 788 阅读 · 0 评论 -
poj 1006 Biorhythms
#include #include #include using namespace std;int m[4], a[4];int M;void Ex_Gcd(int a, int b, int &d, int &x, int &y){ if(b == 0) { x = 1, y = 0; d = a; retur原创 2014-01-02 19:54:19 · 713 阅读 · 0 评论 -
poj 2115 C Looooops
#include #include #include using namespace std;typedef long long LL;void Ex_Gcd(LL a, LL b, LL &d, LL &x, LL &y){ if(b == 0) { x = 1; y = 0; d = a; ret原创 2013-12-18 21:22:20 · 732 阅读 · 0 评论 -
同余问题怎么求解最小正整数解
一:若gcd(a, b) = 1,则方程ax ≡ c (mod b)在[0, b-1]上有唯一解。证明: 存在性:存在整数k和l使a*k + b*l = gcd(a, b) = 1,即我们可以求出ax ≡ 1 (mod b)的解x0。当然,两边乘以c有a(cx0) ≡ c (mod b),所以有x = cx0就是ax ≡ c (mod b)的解。由于加上或减去若干倍b都是该方程的解...原创 2013-12-12 19:23:46 · 4017 阅读 · 0 评论 -
hdu1788 Chinese remainder theorem again
求最小公倍数;Lcm 的数据类型是LL, 忽略了,WA了一次!本题要求的是N%Mi = Mi - a; 即:N%Mi + a = Mi;则有:N + a ≡ 0 ( mod Mi);定理:若有:a ≡ b(mod mi),当且仅当:a ≡ b (mod [m1 * m2 * ···········mn]);#include #include using namespace std原创 2014-01-02 20:18:53 · 810 阅读 · 0 评论 -
POJ 3233
矩阵的快速幂模m#include #include #include using namespace std;const int MAXN = 110;struct Matrax{ int m[MAXN][MAXN];};Matrax a, per;int n, m;void Inite(){ int i, j; for(i = 0; i < n; ++i原创 2014-01-01 20:16:08 · 600 阅读 · 0 评论 -
poj 2891 Strange Way to Express Integers
#include #include #include using namespace std;void Ex_Gcd(long long a, long long b, long long &d, long long &x, long long &y){ if(b == 0) { x = 1; y = 0; d = a;原创 2013-12-12 21:15:03 · 764 阅读 · 0 评论 -
poj 1995 Raising Modulo Numbers
#include #include #include using namespace std;typedef long long LL;LL Quick_Mod(LL a, LL b, LL m){ LL ans = 1; while(b) { if(b & 1) { ans = ans * a %原创 2014-01-02 01:56:12 · 593 阅读 · 0 评论 -
nefu 84
#include using namespace std;long long Extended_Gcd(long long a, long long b, long long &x, long long &y){ if(b == 0) { x = 1; y = 0; return a; } long long原创 2013-12-10 17:58:46 · 705 阅读 · 0 评论 -
hdu 2035 人见人爱A^B
设:a%m = r1, b % m = r2, 则:(a*b) % m = (a%m)*(b%m)%m;令: a = k1 *m + r1, b = k2 * m + r2;则:a*b = ( k1*m+r1 ) * (k2*m + r2) = (k1*k2*m^2 + k1*m*r2 + k2*m*r1 + r1*r2)=> (a*b)%m = (k1*k2*m^2 + k1*m原创 2013-12-10 13:52:51 · 1355 阅读 · 0 评论 -
hdu 1021 Fibonacci Again
设a%m = r1, b%m = r2,则:(a+b)%m = (r1 + r2)%m = (a%m + b%m)%m;令:a = k1 * m + r1; b = k2 * m + r2;则:(a+b)%m = (k1*m + r1 + k2 * m + r2)%m = ((k1 + k2) * m + r1 + r2)%m = (r1 + r2)%m = (a%m + b%m)%m原创 2013-12-10 13:33:09 · 772 阅读 · 0 评论 -
hdu 1573 X问题
#include #include #include using namespace std;const int MAXN = 15;typedef long long LL;LL Gcd(LL a, LL b){ if(b == 0) return a; else return Gcd(b, a%b);}void Ex_原创 2013-12-20 12:09:21 · 768 阅读 · 0 评论