扩展欧几里得#include#include#include#include#define maxn 3000009#define ll long longusing namespace std;void gcd(ll a,ll b,ll& d,ll& x,ll &y){ if(!b){d=a...
分类:
其他好文 时间:
2014-07-18 19:39:25
阅读次数:
312
UVA 10548 - Find the Right Changes
题目链接
题意:给定a,b,c,表示货物的价值,求由A货物和B货物组成C货物有几种方法,判断有无解和是否有无限多种
思路:扩展欧几里得求通解,去计算上限和下限就能判断
代码:
#include
#include
#include
#include
using namespace std;
...
分类:
其他好文 时间:
2014-07-11 00:22:22
阅读次数:
419
首先求出通项 X=x+b/d*t Y=y-a/d*t (x,y为ax+by=gcd(a,b)的解,d=gcd(a,b))可知我们要求的最小的解是 abs(x+b/d*t)
+ abs(y-a/d*t)
设a>b不是的话,就交换a,b,我们发现上述关于t的方程是 |x+k1*t| + |y-k2*t|,由于a>b所以k2>k1,所以方程一开始右边减小的比左边增加的快
所以当y=k2*t的时候...
分类:
其他好文 时间:
2014-06-30 07:49:37
阅读次数:
244
UVA 10090 - Marbles
题目链接
题意:有两种盒子,一种代价c1,能装n1个珠子,一种代价c2,能装n2个珠子,问如何正好装n个珠子,并且使得代价最少。
思路:利用扩展欧几里得算法求出n1?x+n2?y=n的一个解(x′,y′)
就可以知道x,y的通解分别为
x=x′?n/gcd(n1,n2)+n2/gcd(n1,n2)?t
y=y′?n/gac(n1,n2)?...
分类:
其他好文 时间:
2014-06-18 00:44:40
阅读次数:
182
又是一条数论题目,最近学习数论,看完书本感觉并不能掌握数论的,还是需要多多练习,多运用才能掌握这个思想武器的。
本题可以简单点过,不需要太高级的数论内容;
但是也可以运用好数论的内容,可以应用上三个数论的内容:
1 扩展欧几里得
2 快速求模
3 乘法逆元(inverse of modulo)
2 快速求模,也可以生成一个数组,因为这里最大是40000,故此数值不大,可以使用数组,然后查表,速度很快。
但是这里使用快速的时间效率也几乎接近常数,没必要保存一个数组。如下面的powMod函数。
3 乘法...
分类:
其他好文 时间:
2014-06-11 00:55:53
阅读次数:
351
Description
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面...
分类:
其他好文 时间:
2014-05-26 03:43:32
阅读次数:
182
题意:求for(int i=a;i!=b;i+=c,i%=(1
解法:即求解C*x-(1C*x+K*y=b-a;如果g=gcd(C,K)不能被b-a整除,则说明无解。
用exgcd()求出一组C/g*x+K/g*y=1的解,然后两边乘上(b-a)/g将求出的x取最小正数输出。
代码:/*************************************...
分类:
其他好文 时间:
2014-05-21 07:09:42
阅读次数:
226
扩展欧几里得定理,和中国剩余定理的简单练习,有助于我们更好的掌握...
分类:
其他好文 时间:
2014-05-09 02:28:45
阅读次数:
297