|
欧拉函数/莫比乌斯函数嗯……跟2190很像的一道题,在上道题的基础上我们很容易就想到先求出gcd(x,y)==1的组,然后再让x*=prime,y*=prime这样它们的最大公约数就是prime了……
当然我们完全没必要这样做……对于每个prime[j],计算在(1,n/prime[j])范围内互质的数的对数,记为f[j],那么答案就等于sigma(f[j])
f[j]的求法还是和以前一样啦~(sigma φ(i))*2+1 (加一是因为类似 5,5 这样两个质数它俩的GCD也是质数)
UPD:这个由于$\phi(i)$是积性函数,所以互质的对数是可以乘起来的……
核心思想在于转化:即把【求(1,n)范围内gcd=prime的对数】转化为【求(1,n/prime)范围内gcd=1的对数】
另外,最后结果会很大……需要用long long.
1 /**************************************************************
2 Problem: 2818
3 User: Tunix
4 Language: C++
5 Result: Accepted
6 Time:888 ms
7 Memory:89164 kb
8 ****************************************************************/
9
10 //BZOJ 2818
11 #include<cstdio>
12 #include<cstring>
13 #include<cstdlib>
14 #include<iostream>
15 #include<algorithm>
16 #define rep(i,n) for(int i=0;i<n;++i)
17 #define F(i,j,n) for(int i=j;i<=n;++i)
18 #define D(i,j,n) for(int i=j;i>=n;--i)
19 using namespace std;
20 int getint(){
21 int v=0,sign=1; char ch=getchar();
22 while(!isdigit(ch)) {if(ch=='-') sign=-1; ch=getchar();}
23 while(isdigit(ch)) {v=v*10+ch-'0'; ch=getchar();}
24 return v*sign;
25 }
26 /*******************template********************/
27 const int N=10000010;
28 typedef long long LL;
29 int prime[N],phi[N],tot=0;
30 bool check[N];
31 void getphi(int n){
32 F(i,0,n) check[i]=0;
33 phi[1]=0;
34 F(i,2,n){
35 if(!check[i]){
36 prime[tot++]=i;
37 phi[i]=i-1;
38 }
39 rep(j,n){
40 if(i*prime[j]>n) break;
41 check[i*prime[j]]=1;
42 if(i%prime[j]==0){
43 phi[i*prime[j]]=phi[i]*prime[j];
44 break;
45 }
46 else phi[i*prime[j]]=phi[i]*(prime[j]-1);
47 }
48 }
49 }
50 int main(){
51 int n=getint();
52 getphi(n);
53 LL ans=0;
54 rep(j,tot){
55 LL temp=0;
56 F(i,1,n/prime[j]) temp+=phi[i];
57 ans+=2*(LL)temp+1;
58 }
59 printf("%lld\n",ans);
60 return 0;
61 }
62 欧拉函数
莫比乌斯函数版本的不会写……这里@一下iwtwiioi,大家可以去看他的代码……
2818: Gcd
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 2275 Solved: 1027
[Submit][Status][Discuss]
Description
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的
数对(x,y)有多少对.
Input
一个整数N
Output
如题
Sample Input
4
Sample Output
4
HINT
hint
对于样例(2,2),(2,4),(3,3),(4,2)
1<=N<=10^7
Source
湖北省队互测
[Submit][Status][Discuss]
|
免责声明:
1. 本站所有资源来自网络搜集或用户上传,仅作为参考不担保其准确性!
2. 本站内容仅供学习和交流使用,版权归原作者所有!© 查看更多
3. 如有内容侵害到您,请联系我们尽快删除,邮箱:kf@codeae.com
|