百度百科: 欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。 证明: r = a mod b, a = b * k + r; => r = a - b * k; d|a && d|b = ...
分类:
编程语言 时间:
2017-08-13 12:18:36
阅读次数:
136
https://vjudge.net/problem/UVA-1151 题意,给出N个点以及二维坐标,可以在任意两点间建立通路,代价是两点欧几里得距离的平方,同时有q个套餐,套餐x有qx个点,代价是qw, 花费qw就能将这qx个点全部相联通,套餐可以任意选择几种或不选,求将所有的点联通所要的最小代价 ...
分类:
其他好文 时间:
2017-08-12 19:43:37
阅读次数:
184
扩展欧几里得 我们发现其实就是两个野人在自己的寿命内不会相遇,或者永远不会相遇,那么我们枚举m,然后枚举两个人,看是否符合条件 扩展欧几里得ax+by=c,这里c不能取模,a能取模,具体不想了 #include<bits/stdc++.h> using namespace std; const in ...
分类:
其他好文 时间:
2017-08-10 13:19:00
阅读次数:
139
求GCD 线性筛求[1,n]的质数 1 bool isprime[1000]; 2 int prime[100],tot; 3 void pri(int n) 4 { 5 tot = 0; 6 memset(isprime,true,sizeof(isprime)); 7 int i,j; 8 fo ...
分类:
编程语言 时间:
2017-08-10 10:27:37
阅读次数:
197
这是一个好东西. 它是用来求两个数的最大公因数. 思路:辗转相除法.每次a % b,如果余数等于1,则余数的值给b. 如果大于1,那么继续将除数%余数. 代码如下: ...
分类:
编程语言 时间:
2017-08-09 23:48:33
阅读次数:
195
传送门 题目描述 求 x+m*t≡y+n*t (mod l) 题解 将上式 转换一下... x-y≡(n-m)*t(mod l) (n-m)*t+l*k=x-y... 然后用扩展欧几里得求... 因为我们用扩展欧几里得求出的是(n-m)*t+l*k=gcd(n-m,l)=(x-y)/k;(当 x-y ...
分类:
其他好文 时间:
2017-08-09 22:16:11
阅读次数:
147
题目链接:http://poj.org/problem?id=1061 其实欧几里得我一直都知道,只是扩展欧几里得有点蒙,所以写了一道扩展欧几里得裸题。 欧几里得算法就是辗转相除法,求两个数的最大公约数,算法是,a,b的最大公约数是gcd(b,a%b)然后不断递归下去,直到b=0 转换成c++语言就 ...
分类:
其他好文 时间:
2017-08-09 12:59:10
阅读次数:
138
中国剩余定理: x ≡ a1 (% m1) x ≡ a2 (% m2) . . . x ≡ an (% mn) m1,m2...mn 互质。我们求里面的x,就会用到中国剩余定理。首先将 x 看成 s ,则 s ≡ a1 (% m1) 1式 s + m1 * y = a1 另 M = m1 * m2 ...
分类:
其他好文 时间:
2017-08-08 19:43:53
阅读次数:
125
1 int gcd(int n,int m)//n>m 2 { 3 //最大公约数 4 int r; 5 while(m) 6 { 7 r = n%m; 8 n = m; 9 m = r; 10 } 11 return n; 12 } 13 14 int kgcd(int a,in... ...
分类:
其他好文 时间:
2017-08-08 12:42:55
阅读次数:
128
前两题很水啊……没必要开三篇了就扔到一篇里去了。改水题异常艰难,代码量很小然而我又被什么奇怪的东西绊住了。 Passward 时间限制: 1 Sec 内存限制: 512 MB 题目描述 你来到了一个庙前,庙牌上有一个仅包含小写字母的字符串 s。 传说打开庙门的密码是这个字符串的一个子串 t,并且 t ...
分类:
其他好文 时间:
2017-08-08 09:26:29
阅读次数:
187