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) 编辑

导航