摘要: 欧拉定理:设a与n互素,则 a^∮(n)≡ 1(mod n)当p为素数是,∮(p)=p-1,则有如下定理费马小定理:设p是素数,a与p互素,则 a^(p-1)≡ 1(mod p) 它的另一种形式是 a^p ≡ a (mod p)。 阅读全文
posted @ 2013-11-03 15:52 清风旋叶 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 求最大公约数和最小公倍数的方法1:可以用整数的因子分解,求最大公约数和最小公倍数,设 a=p1^r1P2^r2...pk^rk, b=p1^s1p2^s2....pk^sk,其中p1,p2,...pk是不同的素数,r1,r2,..rk,s1,s2,..sk是非负数,则 gcd(a,b)=p1^min(r1,s1)p2^min(r2,s2)....pk^min(rk,sk), lcm(a,b)=p1^max(r1,s1)p2^max(r2,s2)....pk^max(rk,sk).2:求最大公约数常用方法是辗转相除法又叫做欧几里德算法其原理是:设a=qb+r.其中a,b,q,r都是整数,则 gc 阅读全文
posted @ 2013-11-03 13:08 清风旋叶 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 定义:设m是正整数,a和b是整数。如果m|(a-b),则称a模b同余b,或a与b模m同余,记作a≡b(mod m)。a与b模m同余的条件:1.a与b除以m余数相同,即a mod m=b mod m。2.a=b+km,其中k是整数。同余关系是等价关系,即具有自反性,对称性,传递性。性质1:模算术运算 若a ≡ b(mod m),c ≡ d(mod m),则 a±c ≡ b±c(mod m),ac ≡ bd(mod m),a^k ≡ b^k(mod m),其中k是非负数。性质2:设d>=1,d|m,则 a ≡ b(mod m)=》a ≡ b(mod d)。性质3:设d&g 阅读全文
posted @ 2013-11-03 12:37 清风旋叶 阅读(643) 评论(0) 推荐(0) 编辑
摘要: 整除的定义:设a,b是两个整数,且b≠0。如果存在整数c,使a=bc,则称a被b整除,记作b|a。素数的定义:如果正整数a大于1且只能被1和它自己整除,则称a是素数;如果a大于1且不是素数,则称a是合数,素数也叫做质数。合数的一个性质:合数必有素数因子,即设a是一个合数,则存在素数p,使得p|a。算术基本定理:设a>1,则 a=p1^r1p2^r2p3^r3...pk^rk,其中p1,p2,p3...pk是不相同的素数,r1,r2....rk是正整数(其实ri也可以为0),并且不计顺序的情况下,该表示是惟一的。该表达式也叫做a的素因子分解。推论:设a=p1^r1p2^r2p3^r3... 阅读全文
posted @ 2013-11-02 14:45 清风旋叶 阅读(1022) 评论(0) 推荐(0) 编辑
摘要: 欧拉函数∮是数论中的一个重要函数,设n是正整数,∮(n)表示{0,1,2,...n-1}中与n互素的数的个数。例如∮(12)=4,因为与12互素的数有1,5,7,11.这里认为∮(1)=1.下面给出欧拉函数的计算公式。∮(n)=n(1- 1/p1)(1- 1/p2)(1- 1/p3)...(1- 1/pk)欧拉函数的性质:1.若n是质数p的k次幂,φ(n)=(p-1)p^(k-1)2.若m,n互质,φ(mn)=φ(m)φ(n)3.若n为奇数,则∮(n)=∮(2n)代码:欧拉函数的筛法代码:#include#define maxn 100int prime[maxn];int ans[maxn] 阅读全文
posted @ 2013-10-30 19:36 清风旋叶 阅读(1150) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3468代码:#include#include#define maxn 100010struct node{ int l,r; __int64 sum,p;}tree[maxn*4];__int64 value[maxn];void build(int l,int r,int v){ tree[v].l=l; tree[v].r=r; tree[v].p=0; if(l==r) { tree[v].sum=value[l]; return ; } int mid... 阅读全文
posted @ 2013-10-27 19:23 清风旋叶 阅读(163) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=4046非线段树的方法,纯模拟。(AC)#include #include #include using namespace std;const int maxn = 50000+5;char str[maxn];int vis[5];int dp[maxn];int main(){ int t,ncas= 1; scanf("%d",&t); while( t-- ) { printf("Case %d:\n",ncas++); int n,m; ... 阅读全文
posted @ 2013-10-22 19:52 清风旋叶 阅读(174) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1754代码:#include#include#includeusing namespace std;#define maxn 200005int tree[4*maxn];void build(int left,int right,int root){ if(left==right) { scanf("%d",&tree[root]); } else { int mid=(left+right)/2; build(left,mid,ro... 阅读全文
posted @ 2013-10-22 19:42 清风旋叶 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 令G=(V,E)是连通的无向图。如果G中的两条路不包含相同的边,那么就称这两条路是无重边的。令O是V中度数为奇数的节点的集合。首先我们可以断言O中有偶数个节点。要证明上述断言,可以把所有节点的度数加起来,这样的到的值恰为边数的二倍,由于度数为奇数的节点都在总和里加了一个奇数,所以一定有偶数个度数为奇数的节点。定理;令G=(V,E)是连通的无向图,O是V中度数为奇数的节点的集合,我们可以把O中的节点分成节点对,对每一对节点都能找到连接它们的与其他路径无重边的路径。 阅读全文
posted @ 2013-10-20 17:56 清风旋叶 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 定理:令G=(V,E)是一个有向图。G中存在一个独立集S(G),使得G中的每一个节点都可以从S(G)中的某一节点通过一条长度不超过2的路到达。归纳假设:对任何节点数小于n的有向图成立。证明过程省略。 阅读全文
posted @ 2013-10-20 17:47 清风旋叶 阅读(130) 评论(0) 推荐(0) 编辑