题目地址:POJ 2115
水题。。公式很好推。最直接的公式就是a+n*c==b+m*2^k.然后可以变形为模线性方程的样子,就是
n*c+m*2^k==b-a.即求n*c==(b-a)mod(2^k)的最小解。(真搞不懂为什么训练的时候好多人把青蛙的约会都给做出来了,这题却一直做不出来。。。。。这两道不都是推公式然后变形吗。。。。。)
代码如下:
#include
#include
...
分类:
其他好文 时间:
2014-08-06 22:56:42
阅读次数:
235
UVA 11768 - Lattice Point or Not
题目链接
题意:给定两个点,构成一条线段,这些点都是十分位形式的,求落在这个直线上的正数点。
思路:先把直线表达成a x + b y = c的形式,a,b, c都化为整数表示,然后利用扩展gcd求出x和y的通解,然后已知min(x1, x2)
值得注意的是,直线为平行坐标系的情况,要特殊判断一下
代码...
分类:
其他好文 时间:
2014-07-03 16:28:47
阅读次数:
169
设两只青蛙跳了t步,则此时A的坐标:x+mt,B的坐标:y+nt。要使的他们在同一点,则要满足: x+mt - (y+nt) = kL (p是整数)化成: (n-m)t + kL = x-y (L > 0) 则变成求解同余方程: (n-m)t≡ (x-y) mod L ,用扩展gcd解决。 且此时当...
分类:
其他好文 时间:
2014-06-30 11:21:59
阅读次数:
213
已知 a,b (a>=0,b>=0)
求一组解 (x,y) 使得 (x,y)满足
gcd(a,b) = ax+by
注意求出的 x,y 可能为0或负数
代码中g = gcd(a,b);
LL extend_gcd (LL a , LL b , LL &x , LL &y) {
if (b == 0) {
x = 1LL;
y = 0;...
分类:
其他好文 时间:
2014-06-22 08:38:36
阅读次数:
186
题目链接题意:给k对数,每对ai, ri。求一个最小的m值,令m%ai =
ri;分析:由于ai并不是两两互质的,
所以不能用中国剩余定理。只能两个两个的求。a1*x+r1=m=a2*y+r2联立得:a1*x-a2*y=r2-r1;设r=r2-r2;互质的模线性方程组m=r[i](mod
a[i])...
分类:
其他好文 时间:
2014-06-11 07:25:30
阅读次数:
203
题目链接题意:扩展gcd模板: 1 #include 2 #include 3 #include 4
#include 5 #define LL long long 6 using namespace std; 7 8 void exgcd(LL a, LL
b, LL &d, LL &x...
分类:
其他好文 时间:
2014-06-07 07:50:13
阅读次数:
187
题目链接分析:打表以后就能发现时卡特兰数, 但是有除法取余。f[i] = f[i-1]*(4*i -
2)/(i+1);看了一下网上的题解,照着题解写了下面的代码,不过还是不明白,为什么用扩展gcd, 不是用逆元吗。。网上还有别人的解释,没看懂,贴一下:(a /
b) % m = ( a % (m*...
分类:
其他好文 时间:
2014-05-27 16:17:10
阅读次数:
305