恒邪

随笔分类 -  数论

Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)
摘要:Alice and BobTime Limit: 1000ms Memory limit: 65536K题目描述 Alice and Bob like playing games very much.Today, they introduce a new game. There is a polyn... 阅读全文

posted @ 2014-05-04 20:52 恒邪 阅读(221) 评论(0) 推荐(0)

Euclid算法(欧几里得算法)
摘要:线性组合与GCD现在我们证明一个重要的定理:gcd(a,b)是a和b的最小的正线性组合。证明:设gcd(a,b)为d,a和b的最小的正线性组合为s∵d|a且d|b,∴d|s。而a mod s=a-[a/s]s =a-[a/s](ax+by) =a(1-[a/s]x)-b[a/s]y亦为a和b的线性组合∵a mod s=b。用辗转相减法时,必须先判断大小,而Euclid算法不然。若a<b,则一次递归就会转为gcd(b,a),接着就能正常运行了。 阅读全文

posted @ 2014-04-08 20:17 恒邪 阅读(1982) 评论(0) 推荐(0)

用线性组合表示两个数的最大公约数
摘要:用辗转相除法就OK了举个例子求(42,15)并用42和15线性表示(42,15)解:利用辗转相除法42=15*2+12①15=12*1+3②12=3*4③所以(42,15)=(15,12)=(12,3)=3由①有12=42-15*2代入②得3=15-12=15-(42-15*2)=-42+15*3所以(42,15)=-42+15*3=3即为所求一般地设整数a和b,有辗转除法a=bq1+r1(0=2)则有aQk-bPk=(-1)^(k-1)*rk(k=1,2,……,n) 阅读全文

posted @ 2014-04-08 20:08 恒邪 阅读(787) 评论(0) 推荐(0)

POJ-2142The Balance
摘要:The BalanceTime Limit:5000MSMemory Limit:65536KTotal Submissions:2378Accepted:1041DescriptionMs. Iyo Kiffa-Australis has a balance and only two kinds of weights to measure a dose of medicine. For example, to measure 200mg of aspirin using 300mg weights and 700mg weights, she can put one 700mg weight 阅读全文

posted @ 2014-04-08 19:32 恒邪 阅读(166) 评论(0) 推荐(0)

扩展欧几里德算法
摘要:不定方程ax+by=c重点:解二元一次不定方程。看起来扩展Euclid算法是不定方程的一种特殊情况,实际上呢,不定方程却是用Euclid算法解的。对 于不定方程ax+by=c,设gcd(a,b)=d,如果ax+by=c有解,则d|c(这也是许多奥数题的切入点)。所以一旦d不是c的约数,那么 ax+by=c一定无解。当d|c时,先求出ax'+by'=d=gcd(a,b)的x'和y',则x=x'*c/d,y=y'*c/d。由上一段可知, 只要ax+by=c有一个解,它就有无数个解。Euclid算法还可以求解同余方程ax≡b(mod m)。这其实和不定 阅读全文

posted @ 2014-04-07 20:48 恒邪 阅读(268) 评论(0) 推荐(0)

哈理工OJ-1328 相等的最小公倍数
摘要:题目描述 定义 An 为 1,2,…,n 的最小公倍数,例如,A1=1,A2=2,A3=6,A4=12,5=60,A6=60。 请你判断对于给出的任意整数 n,An 是否等于 An–1。如果 An 等于An-1则输出 YES 否则输出 NO。分析 由最小公倍数的定义我们可以知道,如果 An=An-1 则 An-1 可以被 n 整除,首先,对于一个数 n 如果是素数,那么 An 不等于 An-1,其次,我们分析 n,如果对于小于 n 的每一对因子即 n=a*b(a1,则 lcm(a,b)=n/gcd(a,b) 2 #include 3 #include 4 using namespace st. 阅读全文

posted @ 2014-04-07 20:09 恒邪 阅读(354) 评论(1) 推荐(0)

欧几里得算法
摘要:什么是GCD?GCD是最大公约数的简称(当然理解为我们伟大的党也未尝不可)。在开头,我们先下几个定义: ①a|b表示a能整除b(a是b的约数) ②a mod b表示a-[a/b]b([a/b]在Pascal中相当于a div b) ③gcd(a,b)表示a和b的最大公约数 ④a和b的线性组合表示ax+by(x,y为整数)。我们有:若d|a且d|b,则d|ax+by(这很重要!)欧几里得算法又称为辗转相除法,设两个数 a,b则 a,b的最大公约 gcd(a,b)=gcd(b,a%b) 不妨设 a>=b,c=gcd(a,b),a=kc,b=jc,则 k,j 互素(否则 c 不是 a,b 的最 阅读全文

posted @ 2014-04-07 19:10 恒邪 阅读(209) 评论(0) 推荐(0)

导航