基本算法 这些都是非常基本的的算法,希望所有学习的人都能理解! 1.数论算法 求两数的最大公约数 function gcd(a,b:integer):integer; begin if b=0 then gcd:=a else gcd:=gcd (b,a mod b); end ; 求两数的最小公倍...
分类:
其他好文 时间:
2014-07-16 19:35:42
阅读次数:
665
#includeusing namespace std;int main(){ int g,l,t; cin>>t; while(t--){ cin>>g>>l; if(l%g==0)//最大公约数一定是最小公倍数的因子 cout ...
分类:
其他好文 时间:
2014-07-13 21:34:46
阅读次数:
176
求1~n内所有数对(x,y),gcd(x,y)=质数,的对数。
思路:用f[n]求出,含n的对数,最后用sum【n】求和。
对于gcd(x,y)=a(设x
他们乘积的f[i*a]值包括i的欧拉函数值。时间复杂度(n*质数个数)
#include
#include
using namespace std;
const int maxx=100010;
int mindiv[maxx+5],p...
分类:
其他好文 时间:
2014-07-13 16:45:50
阅读次数:
177
efficient method to solve gcd problem
分类:
其他好文 时间:
2014-07-09 18:25:30
阅读次数:
269
找到规律之后本题就是水题了,不过找规律也不太容易的,证明这个规律成立更加不容易。
本题就是求step和mod如果GCD(最大公约数位1)那么就是Good Choice,否则为Bad Choice
为什么这个结论成立呢?
因为当GCD(step, mod) == 1的时候,那么第一次得到序列:x0, x0 + step, x0 + step…… 那么mod之后,必然下一次重复出现比x0大的数必...
分类:
其他好文 时间:
2014-07-08 19:16:21
阅读次数:
227
//题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 package com.mumu.ready;import java.util.Scanner;public class Multiple { public static void main(String[] args) { Scann....
分类:
其他好文 时间:
2014-07-05 19:18:33
阅读次数:
229
题目链接:uva 10951 - Polynomial GCD
题目大意:给出n和两个多项式,求两个多项式在所有操作均模n的情况下最大公约数是多少。
解题思路:欧几里得算法,就是为多项式这个数据类型重载取模运算符,需要注意的是在多项式除多项的过程中,为了保证各项系数为整数,需要将整个多项式的系数整体扩大至一定倍数,碰到先除后模的时候要用逆元。
#include
#include
...
分类:
其他好文 时间:
2014-07-05 11:00:09
阅读次数:
271
1 #include 2 using namespace std; 3 int main(){ 4 int a,b,m,n,x; 5 cin>>a>>b; 6 m=a>b?a:b; 7 n=a+b-m; 8 x=n; 9 while(x!=0){10...
分类:
其他好文 时间:
2014-07-03 21:56:51
阅读次数:
268
题目连接:uva 10622 - Perfect P-th Powers
题目大意:对于x,如果存在最大的p,使得有整数满足x=bp,则称x为perfect
pth power。现在给出x,求p。
解题思路:将x分解质因子,所有置因子的个数的最大公约数即为所求p,需要注意的是x为负数的时候,p必须为奇数。
#include
#include
#include
const...
分类:
其他好文 时间:
2014-07-03 16:56:13
阅读次数:
233
描述
欧几里德算法
别名:辗转相除法
用途:计算两个正整数a,b的最大公约数
欧几里德拓展算法
扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足等式:
ax+by=gcd(a,b)=d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。
代码
C++ 欧几里德LL gcd (LL a, LL b) {
ret...
分类:
其他好文 时间:
2014-07-03 16:20:26
阅读次数:
198