题目地址: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
原式 ax + by = c => ax1 + by1 = gcd(a,b);
a,b,c为任意整数,d = gcd(a,b),则 ax1 + by1 = d 的一组解是(x1,y1),c是gcd(a,b)的倍数时,其中的一组解为(x1*c/d,y1*c/d);c不是gcd(a,b)的倍数时,无解
青蛙的约会,就是一道例题
按照题意很容易列举出等式:(x+ms) -...
分类:
其他好文 时间:
2014-08-06 19:26:02
阅读次数:
216
Description
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面...
分类:
其他好文 时间:
2014-08-04 21:40:48
阅读次数:
207
static long x, y;
public static long exgcd(long a, long b)
{
if (b == 0)
{
x = 1;
y = 0;
return a;
}
long r = exgcd(b, a % b);
long t = x;
x = y;
y = t - a / b * y;
return...
分类:
其他好文 时间:
2014-08-03 12:50:15
阅读次数:
268
之前已经完成了大整数的表示、绝对值的比较大小、取负值、加减法运算、乘法运算以及除法和余数运算。具体见我的主页前三篇博客(自己动手写Java 系列 )。
这篇博客添加求大整数GCD、扩展欧几里得算法和求Mod逆的算法。...
分类:
编程语言 时间:
2014-07-29 15:06:48
阅读次数:
399
青蛙的约会
Time Limit: 1000MS
Memory Limit: 10000K
Total Submissions: 89206
Accepted: 15926
Description
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到...
分类:
其他好文 时间:
2014-07-29 15:04:21
阅读次数:
223
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。
基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。
递归代码:
__int64 gcd(__int64 a,__int64 b)
{
return b==0?a:gcd(b,a%b);
}
扩展欧几里得
基本...
分类:
其他好文 时间:
2014-07-29 15:00:38
阅读次数:
431
链接:poj 1061
解题思路:扩展欧几里德应用:求方程Ax+By=C的一组解(x0,y0)。
设青蛙跳t次相遇,由题意可得方程:
x+mt=y+nt+CL
--> x-y=(n-m)t+CL 且 (x-y),(n-m),L已知.就是求满足方程的最小正整数解t。
定理:设a,b,c为任意整数。若方程ax+by=c的一组整数解为(x0...
分类:
其他好文 时间:
2014-07-29 14:55:11
阅读次数:
173
先做出两个函数的图像,然后求|x|+|y|的最小值。|x|+|y|=|x0+b/d *t |+|y0-a/d *t| 这个关于t的函数的最小值应该在t零点附近(在斜率大的那条折线的零点附近,可以观察出来)。以下三种情况中,函数最小值都应该出现在B点附近。/*对于不定整数方程xa+yb=c,若 c m...
分类:
其他好文 时间:
2014-07-27 22:07:59
阅读次数:
321
题目:http://poj.org/problem?id=2115
题意:对于C的for(i=A ; i!=B ;i +=C)循环语句,问在k位存储系统中循环几次才会结束。若在有限次内结束,则输出循环次数。否则输出死循环。
思路:这道题是一个扩展欧几里德算法的拓展,求单变元模线性方程 即:Cx=(B-A)(mod 2^k)
扩展欧几里得算法和单变元模线性方程(传送门) + 比较详细的博...
分类:
其他好文 时间:
2014-07-27 11:31:23
阅读次数:
199