题目链接:uva 10548 - Find the Right Changes
题目大意:给定A,B,C,求x,y,使得xA+yB=C,求有多少种解。
解题思路:拓展欧几里得,保证x,y均大于等于0,确定通解中t的取值。
#include
#include
#include
#include
using namespace std;
typedef long long ll...
分类:
其他好文 时间:
2014-07-11 00:03:25
阅读次数:
165
题目链接:uva 1426 - Discrete Square Roots
题目大意:给出X,N,R,求出所有满足的r,使得r2≡x%N,并且R是一个其中的解。
解题思路:
R2?r2=k?N(R?r)(R+r)=k?N=> aA=(R+r),bB=(R?r),A,B为N的因子
所以枚举A,B,就有r=R?aA=bB?RaA+bB=2?R
拓展欧几里得求解,将所有满足的解放入...
分类:
其他好文 时间:
2014-07-06 00:11:14
阅读次数:
268
题目链接:uva 10090 - Marbles
题目大意:给出n,表示有n个珠子,现在要用若干个盒子来装。有两种盒子,一种价钱c1,可以装t1个珠子,另一种价钱c2,可以装t2个珠子。要求所卖的盒子刚好装n个珠子,并且价钱最小的方案。
解题思路:用拓展欧几里得算法求出xt1+yt2=n的一对解x′和y′,这样就有通解:
x=x′ngcd(t1,t2)+t2gcd(t1,t2)k
...
分类:
其他好文 时间:
2014-07-02 16:26:26
阅读次数:
197
UVA 718 - Skyscraper Floors
题目链接
题意:在一个f层高的楼上,有e个电梯,每个电梯有x,y表示y + k * x层都可以到,现在要问从a层能否到达b层(中间怎么换乘电梯不限制)
思路:对于两个电梯间能不能换乘,只要满足y[i] + xx x[i] == y[j] + yy y[j].然后移项一下,就可以用拓展欧几里得求解,进而求出x,y的通解,然后利...
分类:
其他好文 时间:
2014-06-30 16:26:47
阅读次数:
186
问题:给定a1a2...an,
和m1,m2...mn,mi之间两两互质,求一个x,使得x/ai=mi
构造方法:
先求出M=∏ni=1mi,
对于每个mi,求出M / mi, 然后和mi利用拓展欧几里得算法求出M/mi?p+mi?q=1时的值,取∑ni=1(p?ai?M/mi)就是答案。
证明:
证明参考了wiki
由于mi之间两两互质,所以gcd(mi,mj)...
分类:
其他好文 时间:
2014-06-26 13:23:15
阅读次数:
279
题目链接:hdu 4828 Grids
题目大意:略。
解题思路:将上一行看成是入栈,下一行看成是出栈,那么执着的方案就是卡特兰数,用递推的方式求解。
#include
#include
typedef long long ll;
const int N = 1000005;
const ll MOD = 1e9+7;
ll dp[N];
ll extendGcd(ll a...
分类:
其他好文 时间:
2014-06-26 06:58:03
阅读次数:
197
今天比赛的时候拿到的第一道题,其实挺简单的,求两等差序列中相同元素的个数,我想了一下就觉得,只要找到了第一个相等的点,然后后面求最大公约数就可以直接得到结果了网上叫什么拓展欧几里得,我反正是按照我们的思路来的关键是如何找到第一个相等的点,因为首项和公差能达到
10^9,项数可以达到10^18,我觉得...
分类:
其他好文 时间:
2014-05-27 02:53:44
阅读次数:
197
求解ax+by=gcd(a,b)通解:x=x0+b*t;y=y0-a*t; 1 __int64
a,b,x,y; 2 __int64 extend_euclid(__int64 a,__int64 b,__int64 &x,__int64
&y) 3 { 4 if (b==0) 5 ...
分类:
其他好文 时间:
2014-05-26 02:46:40
阅读次数:
198
拓展欧几里得的应用。 1 //Accepted 228 KB 0 ms 2 #include 3
#include 4 #include 5 __int64 a,b,x,y; 6 __int64 extend_euclid(__int64 a,__int64
b,__int64 &...
分类:
其他好文 时间:
2014-05-25 16:14:14
阅读次数:
206