acm教学
lalalademaxi
这个作者很懒,什么都没留下…
展开
-
统计正整数n的因数个数
根据因数成对出现的性质进行优化#include using namespace std;int cnt(int n){ int cnt=0; for(int i=1; i*i { if(n%i==0) { if(i*i==n) //相等 因数个数只用加一次原创 2016-07-12 11:34:46 · 2587 阅读 · 0 评论 -
求正整数n的因数之和
现让你求一个正整数n的所有因数之和,怎么求?>>根据因数成对出现的性质,即可 思考:若给你1~1000000的闭区间上共100W个数,分别求出每个数的因数之和,怎么办?>>预处理constint MAXN = 1000000;intarr[MAXN + 5];//arr[n]保存整数n的因数之和(不包含n本身)void sum_factor(原创 2016-07-12 11:43:05 · 5299 阅读 · 0 评论 -
最大公因数(欧几里德算法)
gcd(a,b) = gcd(b,a mod b) 原理 gcd是(a,b)是两个数的最大公因数上代码#include using namespace std;int gcd(int a,int b) //递推法{ while(b) { int tmp=a%b; //欧几里德原理原创 2016-07-12 15:50:34 · 324 阅读 · 0 评论 -
质数/素数 和筛选
质数(prime number)又称素数,有无限个。除了1和它本身以外不再被其他的除数整除。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积,最小的质数是2枚举法:for(i = 2; i * i if(p % i == 0) returnfalse;returntrue;优化一:除了2以外偶数都不是素数原创 2016-07-12 15:53:13 · 305 阅读 · 0 评论 -
欧拉函数/欧拉定理
欧拉函数 对正整数n,欧拉函数是小于等于n的数中与n互质的数的数目 此函数以其首名研究者欧拉命名(Euler'so totientfunction),它又称为Euler'stotient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。 注:n为1时欧拉函数的值为1通式: 其中p1,p2……pn为原创 2016-07-12 16:10:59 · 331 阅读 · 0 评论 -
快速幂
快大王浅谈进制 快速幂的算法思想:用二进制来优化 什么是进位制: 给出一个非负整数N 如果N=atXbt+ at-1Xbt-1+…+a1Xb+a0 (0 ≤ aii为整数) 那么我们把序列(atat-1…a1a0)(b)称为N的b进制表示。 如果N在b进制下是t+1位数,那么有不等式bt≤Nt+1, 即:t≤logbN 由于t是自然数,原创 2016-07-12 16:13:33 · 197 阅读 · 0 评论 -
快速幂 c++
a是底数,b是指数,mode是取模数,sum是记录取模的结果 (7^7)%4可以看为((7%4)^7)%4(3^7)%4(((3*3)%4)^6)%4(1^6)%4(1^(2*3))%4 // 就像将(7^16)变成(49^8)(1^3)%4.......就是这种步骤 下面是对应代码 long long Mode(long long a,long long b,long long mode...原创 2018-05-05 17:42:48 · 648 阅读 · 0 评论