摘要: /* mod = 2^k; A+C*k === B (mod mod) A+C*x - B = mod*y; C*x - mod*y = B-A; 求x a = C; b = -mod; c = B-A;*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstre 阅读全文
posted @ 2011-04-29 23:31 AC2012 阅读(211) 评论(0) 推荐(0) 编辑
摘要: /* (x+m*s)-(y+n*s) = k*L (k=0,1,2,...) (x-y) + (m-n)*s = k*L k*L + (n-m)*s = (x-y) 这是个方程,如果有解的话。可以使用扩展的欧几里得算法来求 对扩展欧几里得写个小节: a*x+b*y = gcd(a,b) . 求解这个方程的解,一般用扩展欧几里得算法来解 首先右边必须是gcd(a,b)的倍数才行,否则无解 两边同时除以gcd(a,b); a'*x+b'*y = 1; 这样就可以用extGcd来解了,此时a'与b'互质 int extGcd(int a',int b' 阅读全文
posted @ 2011-04-29 23:02 AC2012 阅读(160) 评论(0) 推荐(0) 编辑
摘要: /*这个题目的意思就是找出b的最大取值,然后枚举就可以了。默认b<=ce.g. */// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#incl 阅读全文
posted @ 2011-04-29 17:37 AC2012 阅读(203) 评论(0) 推荐(0) 编辑