【bzoj2818】 Gcd】的更多相关文章

[BZOJ2818]Gcd(莫比乌斯反演) 题面 Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sample Output 4 HINT 对于样例(2,2),(2,4),(3,3),(4,2) 1<=N<=10^7 题解 题目要求的: \[\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)\_is\_prime]\] 把因数提出来…
[bzoj2818]: Gcd 考虑素数p<=n gcd(xp,yp)=p 当 gcd(x,y)=1 xp,yp<=n满足条件 p对答案的贡献: 预处理前缀和就好了 /* http://www.cnblogs.com/karl07/ */ #include <cstdlib> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using…
2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4344  Solved: 1912[Submit][Status][Discuss] Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sample Output 4         [题解]   用f[i]表示1~i中gcd(a,b)=1的数对(…
http://www.lydsy.com/JudgeOnline/problem.php?id=2818 (题目链接) 题意 求给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Solution 对于gcd(x,y)=p的数对个数,就相当于x/p和y/p互质. 细节 前缀和开LL 代码 // poj2478 #include<algorithm> #include<iostream> #include<cstring> #i…
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 湖北省队互测 题解:首先我们要求Σgcd(x,y)=p (p为素数)=> Σgcd(x/p,y/p)=1 那么我们就可以枚举p,求y/p的欧拉函数的前缀和…
2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 3347  Solved: 1479[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&…
Gcd Time Limit: 10 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sample Output 4 HINT 1<=N<=10^7 Solution 直接莫比乌斯反演即可. 然后对于这个式子,我们下界分块一下即可. Code #i…
网址:http://www.lydsy.com/JudgeOnline/problem.php?id=2818 一道数论裸题,欧拉函数前缀和搞一下就行了. 小于n的gcd为p的无序数对,就是phi(1~n/p)的和,因为如果gcd(x,y)=p那么必有gcd(x/p,y/p)=1 转化成有序数对就可以把无序数对的个数*2-1(减1是因为有一个数对是(p,p)) 代码: ..]of longint; s:..]of int64; b:..]of boolean; n,m,i,j,k,t:longi…
题意:给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对 1<=N<=10^7 思路:莫比乌斯反演,同BZOJ2820…… ; ..max]of int64; prime,flag,f,mu:..max]of longint; n,m,i,j,t,v,cas:longint; function clac(n:longint):int64; var x,i,pos:longint; begin clac:=; i:=; while i<=n do…
就是之前的2820的升级版. 把暴力枚举素数改成预处理就随便A了. #include<bits/stdc++.h> #define N 10000005 #define ll long long using namespace std; int mu[N],vis[N],prime[N],cnt; long long f[N]; void calcmu(){ cnt=;mu[]=; memset(f,,sizeof(f)); memset(vis,true,sizeof(vis)); ;i&l…