随笔分类 -  acm-欧拉函数

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开发工程师 阅读(498) 评论(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开发工程师 阅读(1644) 评论(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开发工程师 阅读(2358) 评论(0) 推荐(0)

基本欧拉函数
摘要:证明:欧拉函数的证明暂时还不会,等会了再写吧,概念就是: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开发工程师 阅读(818) 评论(2) 推荐(0)

欧拉函数题目
摘要:hdu 1787,hdu 2588,hdu 1286,hdu 2824,hdu 3501,hdu 4335,hdu 1695,hdu 4279 阅读全文

posted @ 2013-04-21 19:06 后端bug开发工程师 阅读(217) 评论(0) 推荐(0)

导航