poj 2142 拓展欧几里得】的更多相关文章

#include <cstdio> #include <algorithm> #include <cstring> #include <iostream> using namespace std; int a,b,c; int exgcd(int a,int b,int &x,int &y){ ){ x = ; y = ; return a; } int d = exgcd(b,a%b,x,y); int temp = x; x = y; y…
原题实际上就是求方程a*x+b*y=d的一个特解,要求这个特解满足|x|+|y|最小 套模式+一点YY就行了 总结一下这类问题的解法: 对于方程ax+by=c 设tm=gcd(a,b) 先用扩展欧几里得求出方程ax+by=tm的解x0.y0 然后有a*x0+b*y0=tm 令x1=x0*(c/tm),y1=y0*(c/tm) 则a*x1+b*y1=c x1.y1即原方程的一个特解 这个方程的通解:xi=x1+k*(b/m),yi=y1-k*(a/m) 另:如果要求yi的最小非负解?令r=a/tm…
Description Ms. 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 on the side of the medicine an…
POJ.2142 The Balance (拓展欧几里得) 题意分析 现有2种质量为a克与b克的砝码,求最少 分别用多少个(同时总质量也最小)砝码,使得能称出c克的物品. 设两种砝码分别有x个与y个,那么有ax+by=c.可用拓展欧几里得求解. 若x与y均为正数,说明在天平的同一侧,否则在不同册. 需要注意的是,求出的x与y仅为一组特解,此时需要求|x| + |y| 的最小值.根据: 可得 显然这是不好求的,但我们不妨设a>b,根据斜率关系,不难作图. 可以看出,最小值在t2附近取得,枚举附近值…
// poj 1061 青蛙的约会 拓展欧几里得模板 // 注意进行exgcd时,保证a,b是正数,最后的答案如果是负数,要加上一个膜 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; ll gcd(ll a,ll b){…
POJ.1006 Biorhythms (拓展欧几里得+中国剩余定理) 题意分析 不妨设日期为x,根据题意可以列出日期上的方程: 化简可得: 根据中国剩余定理求解即可. 代码总览 #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; typedef int ll; ll p,e,i,d; void exgcd(ll a,…
POJ.1061 青蛙的约会 (拓展欧几里得) 题意分析 我们设两只小青蛙每只都跳了X次,由于他们相遇,可以得出他们同余,则有: 代码总览 #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; void exgcd(ll a, ll b, ll& d, ll&…
POJ 1845 题意不说了,网上一大堆.此题做了一天,必须要整理一下了. 刚开始用费马小定理做,WA.(poj敢说我代码WA???)(以下代码其实都不严谨,按照数据要求A是可以等于0的,那么结果自然就是0了,需要特判一下,但是poj好像没有为0的数据,能AC.先不改了.) 后来看了好多人的博客,发现很少用费马小定理写的,或者写的代码我看不下去..就先用那个什么二分等比数列写了一下. 过程也不说了,很多博客都说了.([1][2]): #include<iostream> #include<…
Description Elina is reading a book written by Rujia Liu, which introduces a strange way to express non-negative integers. The way is described as following: Choose k different positive integers a1, a2, …, ak. For some non-negative m, divide it by ev…
青蛙的约会+拓展欧几里得+题解 纵有疾风起 题意 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的.但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的.为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会…