算法
Victor_zero
这个作者很懒,什么都没留下…
展开
-
次方求模
次方求模 对于问题:求a的b次方取c的模的值,当a,b很大时,直接求解显然是不太现实的。但是,这个问题如果使用公式就变得可解,并且容易计算。 由公式:a^b mod c = (a mod c)^b mod c 递归算法:#include long long int fun (long long int a,long long int b,long long int c); int ma原创 2016-12-11 19:09:22 · 2314 阅读 · 0 评论 -
筛选法求素数
筛选法求素数 /* *本例仅以10000以内所有素数作为范例 */ #include #include #define N 10000 void prime(int n); int isprime[N+1]; int main(void) { int i; prime(N); for (i = 0;i <= N;i++) if (isprime[i原创 2016-12-05 22:30:34 · 394 阅读 · 0 评论 -
求最大公约数的两种常见算法
求最大公约数的两种常见算法 欧几里得算法#include using namespace std; int gcd (int m,int n); int main(void) { int a,b; cin >> a >> b; cout << gcd(a,b); return 0; } int gcd (int m,int n) { int te原创 2016-12-06 18:01:16 · 373 阅读 · 0 评论 -
同余定理
同余定理 今天在南阳理工看了一道题,题意大致就是给你一个自然数,但是这个数的位数,注意,是位数小于等于100万,然后求10003的模,刚开始看的时候我想的是任何一个小于这个数的数求10003的模就是他本身,所以我想让两数一直相减,直到要求的数小于10003或等于10003(模即为1),但最终考虑到大数相减感觉有点麻烦,就百度关于余数的知识,最终发现了这个同余定理,记录下来,为方便自己容易查找,也原创 2016-12-13 21:05:56 · 419 阅读 · 0 评论 -
二分搜索
二分搜索 0 ~ 10000之间数的二分搜索算法: #include #define M 0 #define N 10001 using namespace std; int Bsearch (int a[],int x,int low,int high); int main(void) { int num[N]; int i,m,n,flag; for (i =原创 2016-12-07 16:42:21 · 404 阅读 · 0 评论 -
简单排序算法
简单排序算法 冒泡算法: #include #define N 5 using namespace std; void fun(int a[],int m); int main(void) { int i; int a[N] = {85,56,32,58,12}; fun(a,N); for (i = 0;i < N;i++) cout << a[i] << ' '; ret原创 2016-12-03 19:46:49 · 343 阅读 · 0 评论 -
康拓展开与逆康拓展开
康托展开与逆康托展开 康托展开据我所理解,应该便是给你一个已知的排列,然后这个排列在全排列中是第几小或者第几大的,一般都是按字典序计算,即为第几小的。康托展开的公式为:X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 并且,其中a[i]就是按字典序当前没有出现的比a[i]小的字符的个数,最后算出来的X仅仅只是比当前排列小的排原创 2016-12-29 14:44:43 · 416 阅读 · 0 评论