hdu 1576 A/B

很详细的资料:http://blog.youkuaiyun.com/lulipeng_cpp/article/details/7612490

补充以下结论,自己推的,解释了以上博客里的疑惑。 

方程ax+by=gcd(a,b),即 模线性方程ax≡d(mod b) ,令d = gcd(a,b)。假设 模线性方程的解为 x0, y0。

结论1:则有 max( abs(x0),abs(y0) ) < max( abs(a), abs(b) ); 

结论2:若d = a, 则 x = 1,y = 0; 若 d = b,则 x = 0,y = 1;

结论3:则方程的所有解为 x = x0 + b/d*i, y = y0 - a/d*i。(i = 0, +1, -1, +2, -2, ..........);

          且 abs(x0) < b/d, abs(y0) < a/d;  该模线性方程的最小正整数解(x) 为  min(x) = ( x + b ) % b;

结论4:如果要求方程ax+by=w(   即ax≡w(mod b)   )的解, 模线性方程有解的充要条件为d|w,令 t = w/d;

          方程的所有解为x = (x0 + b/d*i) * t, y = (y0 - a/d*i) * t。(i = 0, +1, -1, +2, -2, ..........);

          该模线性方程的最小正整数解(x) 为  min(x) = (x*t + b )% b;

注意: 结论4最后一行 x*t可能超int(HDU这题没超),以后做题需要注意这点,最好模板都写成__int64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值