![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
Vas_Sago
这个作者很懒,什么都没留下…
展开
-
哥德巴赫猜想
哥德巴赫猜想: 任一大于2的偶数,都可表示成两个素数之和。 而将一个给定的偶数分拆成两个素数之和,则被称之为此数的哥德巴赫分拆。 换句话说,哥德巴赫猜想主张每个大于等于4的偶数都是哥德巴赫数——可表示成两个素数之和的数。欧拉注明此一猜想可以有另一个等价的版本:(A): 任一大于2的偶数都可写成两个质数之和。(B): 任一大于5的奇数都可写成三个素数之和。今日常见的猜想陈述为欧拉的版本,(A)亦原创 2016-11-30 15:48:29 · 654 阅读 · 0 评论 -
筛法求素数
const int MAX=2000;int prim[MAX];int fla[MAX];int prime(){ memset(fla,1,sizeof(fla)); for(int i=2;i<MAX;i++) if(fla[i]){ for(int j=i*2;j<MAX;j+=i){ fla[j]原创 2016-11-28 20:22:43 · 266 阅读 · 0 评论 -
容斥原理
转载声明:原作:e-maxx(Russia) 发表于 2011.8.25 翻译:vici 原文地址http://www.cppblog.com/vici/archive/2011/09/05/155103.html容斥原理是一种重要的组合数学方法,可以让你求解任意大小的集合,或者计算复合事件的概率。 容斥原理描述如下:要计算几个集合并集的大小,我们要先将所有单个集合的大小计算出来,求和,转载 2017-04-16 20:08:36 · 442 阅读 · 0 评论 -
快速幂相关(template)
快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N)算法:例如要求 a^b:把b转换成二进制数,该二进制数第i位的权为 2^(i-1). 11的二进制是1011 11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1 那么a¹¹ => a^(2³)* a^(2¹)* a^(2º) 核心就是下面两个公式: //模板:template<class type>type Pow(原创 2017-05-01 14:26:28 · 211 阅读 · 0 评论 -
高次方取模(template)
//次方求模模板template<class Type>inline Type ModPow(Type m,Type n,Type p) //m的n次方模p{ if(n==0) return 1; if (n==1) return m%p; Type tmp=ModPow(m,n>>1,p); return (tmp*tmp%p)*((n%2?m:1)%原创 2017-05-01 11:05:58 · 1805 阅读 · 0 评论 -
同余定理
数学上,同余(英语:congruence modulo,符号:≡)是数论中的一种等价关系。当两个整数除以同一个正整数,若得相同余数,则二整数同余。同余是抽象代数中的同余关系的原型。最先引用同余的概念与“≡”符号者为德国数学家高斯。定义:两个正整数a,b如果它们初一正整数m所得的余数相同,则称a,b对于模m同余。记作: a≡b(mod m)性质性质1:a≡b(mod m) => c*m=a-b ,原创 2017-05-01 10:50:09 · 1835 阅读 · 0 评论 -
康托展开&逆康托展开
康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。公式 其中, 为整数,并且康托展开简单点说就是,判断这个数在其各个数字全排列中从小到大排第几位。 比如 132,在1、2、3的全排列中排第2位。康托展开求法: 比如2143 这个数: 从头开始判断, ① 比 2(第一位数)小的数有多少原创 2017-04-30 17:39:14 · 384 阅读 · 0 评论 -
最大公约数&最小公倍数(欧几里德算法相关)
int main () /* 相减法求最小公倍数,最大公约数 */{ int m, n, a, b; scanf ("%d%d", &a, &b); m=a;n=b; while(a!=b){ if(a>b) a=a-b; else b=b-a; } printf("%原创 2016-11-02 16:23:35 · 518 阅读 · 0 评论 -
生成随机数
原理#include<iostream>#include<cstdio>#include<cstdlib>/* srand, rand */using namespace std;int main(){ cout<<rand()<<endl;//在[0,RAND_MAX]生成一个随机数 return 0;}//重复运行程序,随机数不变。//这是因为在电脑上的随机函数生成原创 2016-12-10 18:45:00 · 251 阅读 · 0 评论 -
(codeforces)D. Taxes
どこでもドア: http://codeforces.com/contest/735/problem/D 数论:哥德巴赫猜想#include <iostream>#include <cstdio>#include <cmath>using namespace std;inline bool isprime(int n){ if(n <= 1) return false; in原创 2016-11-30 16:54:48 · 213 阅读 · 0 评论 -
斐波那契数列通项公式
/*斐波那契数列通项公式fib[n]=(1/√5) * [((1+√5)/2)^n-((1-√5)/2)^n](n=1,2,3.....)*//*eg:输出斐波那契数前4位数(数据范围n原创 2016-09-16 15:39:17 · 3342 阅读 · 0 评论