上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 20 下一页

2013年6月3日

hdu 4135(容斥原理)

摘要: 题意:就是让你求(a,b)区间于n互质的数的个数.分析:我们可以先转化下:用(1,b)区间与n互质的数的个数减去(1,a-1)区间与n互质的数的个数,那么现在就转化成求(1,m)区间于n互质的数的个数,如果要求的是(1,n)区间与n互质的数的个数的话,我们直接求出n的欧拉函数值即可,可是这里是行不通的!我们不妨换一种思路:就是求出(1,m)区间与n不互质的数的个数,假设为num,那么我们的答案就是:m-num!现在的关键就是:怎样用一种最快的方法求出(1,m)区间与n不互质的数的个数?方法实现:我们先求出n的质因子(因为任何一个数都可以分解成若干个质数相乘的),如何尽快地求出n的质因子呢?我们 阅读全文

posted @ 2013-06-03 15:08 后端bug开发工程师 阅读(6073) 评论(0) 推荐(3) 编辑

求一个数的质因子

摘要: 代码实现:#include<stdio.h>int main(){ __int64 a[100],num,i,n; while(scanf("%I64d",&n)!=EOF) { num=0; for(i=2;i*i<=n;i++) { if(n%i==0) { a[num++]=i; while(n%i==0) n=n/i; } } if(n>1) a[num++]=n; ... 阅读全文

posted @ 2013-06-03 14:44 后端bug开发工程师 阅读(5432) 评论(1) 推荐(0) 编辑

2013年6月1日

求多个数的质因子

摘要: 我学到了一种新的素数筛选法,不过相对于以前那种素数筛选法还是慢了点,不过用来求一个数的质因子的话还是比较好的!!代码实现:#include<iostream>#include<vector>#include<algorithm>#include<string.h>using namespace std;int visited[100010];vector<int>a[100010];void init(){ int i,j; for(i=0;i<100010;i++) a[i].clear();//vector的清空 memse 阅读全文

posted @ 2013-06-01 13:16 后端bug开发工程师 阅读(1662) 评论(2) 推荐(0) 编辑

2013年5月30日

容斥原理

摘要: 题目:hdu 1796,hdu 1685,hdu 2204,hdu 4407,hdu 2841http://acm.swust.edu.cn/oj/problem/821/http://zuojie.3322.org:88/soj/problem.action?id=3137http://acm.hdu.edu.cn/showproblem.php?pid=1796http://acm.hdu.edu.cn/showproblem.php?pid=1695http://poj.org/problem?id=3904hdu 2841http://yzmduncan.iteye.com/blog/ 阅读全文

posted @ 2013-05-30 00:00 后端bug开发工程师 阅读(1066) 评论(0) 推荐(0) 编辑

2013年5月28日

hdu 2157(矩阵的快速幂)

摘要: 题意:容易理解.分析:如果对于矩阵的乘法懂的话,会很容易想到如何去做的,其实转化下就是关于矩阵的快速幂的求法,具体的为什么我们也不好说,自己去好好想想吧!!不过这个题目也挺坑爹的,那就是会有重边这种情况!!就是如果有一个点直接到另一个点有几条路的话只算一条!!代码实现:#include<iostream>#include<stdio.h>#include<string.h>using namespace std;struct node{ int p[25][25];};struct node suan(struct node a,struct node b, 阅读全文

posted @ 2013-05-28 23:58 后端bug开发工程师 阅读(1737) 评论(9) 推荐(1) 编辑

poj 3233(矩阵的快速幂+等比矩阵的性质)

摘要: 题意:容易理解.分析:求a^1+..a^n这是矩阵乘法中关于等比矩阵的求法:|A E||0 E|其中的A为m阶矩阵,E是单位矩阵,0是零矩阵。而我们要求的是: A^1+A^2+..A^L,由等比矩阵的性质|A , 1| |A^n , 1+A^1+A^2+....+A^(n-1)| |0 , 1| 的n次方等于|0 ,1| 所以我们只需要将A矩阵扩大四倍,变成如上形式的矩阵B,然后开L+1次方就可以得到1+A^1+A^2+....+A^L。由于多了一个1,所以最后得到的答案我们还要减去1。同理我们把矩阵A变成B:|A E||0 E|然后我们就是求B的n+1次幂之后得到的矩阵为|x1 x2||x3 阅读全文

posted @ 2013-05-28 12:03 后端bug开发工程师 阅读(3700) 评论(0) 推荐(2) 编辑

2013年5月27日

hdu 3501(欧拉函数)

摘要: 题意:容易理解.分析:开始的时候我是不会做的,后来查了资料之后知道:对于整数n,如果x(x<n)与n互质,那么(n-x)也与n是互质的;同理如果x(x<n)与n不互质,那么(n-x)也与n是不互质的。知道这个之后就可以得出:在0<x<n时,存在这样的x与n互质的个数假设为num(可以通过欧拉函数求得),那么所有与n互质的x的和sum=num*n/2.知道这个之后这个题基本上就是一道水题了。代码实现:#include<stdio.h>#include<string.h>int haha(int n){ int res=n,i; for(i=2;i* 阅读全文

posted @ 2013-05-27 21:12 后端bug开发工程师 阅读(487) 评论(0) 推荐(1) 编辑

hdu 2588(欧拉函数)

摘要: 题意:容易理解.分析:假设x<=n,n=p*d,x=q*d.假设n与x的最大公约数为d,则能够推出p与q肯定是互质的,因为x<=n所以要求的就是p的欧拉函数值了,那么我们就转化成求满足:n=p*d,并且d>=m的p的欧拉函数值之和了。代码实现:#include<stdio.h>#include<string.h>int haha(int n)//求n的欧拉函数值{ int res=n,i,j; for(i=2;i*i<=n;i++) { if(n%i==0) { n=n/i; while(n%i==0) ... 阅读全文

posted @ 2013-05-27 16:39 后端bug开发工程师 阅读(1636) 评论(0) 推荐(0) 编辑

求单个数的欧拉函数

摘要: 题意:给你一个数n,n很大(n<=100000000),但是题目中的测试数据不是很多,这样的话直接用求单个欧拉函数值的方法求解,如果用前面那种方法打个表的话是行不通的,因为n的值太大不适合开设数组,所以这时应该直接求n的欧拉函数值。代码实现:#include<iostream>#include<cmath>using namespace std;int main(){ int n,i,temp; while(scanf("%d",&n)!=EOF) { temp=n; for(i=2;i*i<=n;i++) { if... 阅读全文

posted @ 2013-05-27 16:11 后端bug开发工程师 阅读(2334) 评论(0) 推荐(0) 编辑

2013年5月26日

基本欧拉函数

摘要: 证明:欧拉函数的证明暂时还不会,等会了再写吧,概念就是:n的欧拉函数是指不超过n的与n互质的数有多少个。比如与8互质的数为:1、3、5、7,所以8的欧拉函数值为4.求法:假设要求n的欧拉函数f(n)=n*(1-1/p1)*(1-1/p2)*...*(1-1/pm),其中p1,p2,...pm为小于等于n的n的质因子,比如10的质因子为2,5,所以f(10)=10*(1-1/2)*(1-1/5)=4.代码实现:#include<stdio.h>#include<string.h>#include<math.h>int a[1000001],prime[1000 阅读全文

posted @ 2013-05-26 23:40 后端bug开发工程师 阅读(808) 评论(2) 推荐(0) 编辑

上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 20 下一页

导航