The Euler function
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4389 Accepted Submission(s): 1821
Problem Description
The Eul...
分类:
其他好文 时间:
2015-07-31 18:23:56
阅读次数:
104
GCD Again
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2625 Accepted Submission(s): 1099
Problem Description
Do you have spent so...
分类:
其他好文 时间:
2015-07-31 15:03:23
阅读次数:
124
题意:求两个点(x,y,z)的连线不经过其他点有几个
解:即为求GCD(x,y,z)为1的点有几个
解一:因为x,y,z均在1~n内,所以可以用欧拉函数解出
解二:莫比乌斯反演
设f[n]为GCD(x,y,z)=n的个数
设F[b]为b|GCD(x,y,z)的个数,很明显F[b]=(n/i)*(n/i)*(n/i)
所以F[n]=sigema(b|n,f[b]);
f[n]=sige...
分类:
其他好文 时间:
2015-07-30 13:33:18
阅读次数:
136
对于给定的n,输出小于n的且不与n互质的正整数的和。
做这道题首先要知道欧拉函数,对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目;而且要知道这样一个结论:如果gcd(n,i)=1,则gcd(n,n-i)=1。知道以上两条结论,这道题的思路就大致清晰了。
首先可以知道在[1,n-1]中与n互质的数是成对出现的,即如果i与n互质,则(n-i)一定与n互质。这时我们发现这对于n互质的数的和为n。所以可以得出结论:小于等于n的同时与n互质的数的和是n*Euler(n)/2,Euler(n)表示小于n与n...
分类:
其他好文 时间:
2015-07-29 01:04:02
阅读次数:
160
Calculation 2
Time Limit: 1000MS
Memory Limit: 32768KB
64bit IO Format: %I64d & %I64u
Submit Status
Description
Given a positive integer N, your task is to calculate ...
分类:
其他好文 时间:
2015-07-28 10:57:42
阅读次数:
108
题意:求1-n内最大的x/phi(x)通式:φ(x)=x*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。因此含质因数最多的即为所求,打表求出前n个积...
分类:
其他好文 时间:
2015-07-27 18:42:58
阅读次数:
155
题解来自lsj大神:假设C君为(0, 0), 则右上方为(n - 1, n - 1).phi(x)即欧拉函数是少于或等于n的数中与互质的数的数目Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的...
分类:
其他好文 时间:
2015-07-26 13:58:06
阅读次数:
118
假设C君为(0, 0), 则右上方为(n - 1, n - 1). 一个点(x, y) 能被看到的前提是gcd(x, y) = 1, 所以 answer = ∑ phi(i) * 2 + 2 - 1 = ∑phi(i) * 2 + 1 ( 1 using namespace std;const in...
分类:
其他好文 时间:
2015-07-26 10:57:58
阅读次数:
108
欧拉函数介绍:
欧拉函数,在数论中用于求解 [ 1 , n ] 中与 n 互质数个数 的函数,因为研究者为欧拉,故命名为欧拉函数。
通式:φ(x) = x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。
φ(1) = 1(唯一和1互质的数(小于等于...
分类:
其他好文 时间:
2015-07-25 13:52:14
阅读次数:
127
1 const int maxn=32790; 2 int euler[maxn+2]; 3 void make() 4 { 5 euler[1]=0; 6 for(int i=2;i<=maxn;++i) 7 euler[i]=i; 8 for(int i...
分类:
其他好文 时间:
2015-07-25 09:24:27
阅读次数:
107