bzoj 2818 GCD 数论 欧拉函数
bzoj【2818】Gcd
Description
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的
数对(x,y)有多少对.
Input
一个整数N
Output
如题
Sample Input
Sample Output
HINT
hint
对于样例(2,2),(2,4),(3,3),(4,2)
1<=N<=10^7
题解一(自己yy)
phi[i]表示与x互质的数的个数
即gcd(x,y)=1 1<=y<x
∴对于x,y 若a为素数
则gcd(xa,ya)=a
即满足xa<=N即可,这个答案即为满足条件数的个数
n是10e7,可以O(N)先求出phi
一种方法可以N log N即,二分质数使其满足,但不够优秀
发现x(枚举值)不断增大,即质数个数不断减少,所以单调性
所以O(N)即可。
题解二
求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对
枚举每个素数,然后每个素数p对于答案的贡献就是(1 ~ n / p) 中有序互质对的个数
而求1~m中有序互质对x,y的个数,可以令y >= x, 当y = x时,有且只有y = x = 1互质,
当y > x时,确定y以后符合条件的个数x就是 phiy
所以有序互质对的个数为(1 ~ n/p)的欧拉函数之和乘2减1(要求的是有序互质对,乘2以后减去(1, 1)多算的一次)
那么就只需要先筛出欧拉函数再求个前缀和就可以了
思路二更优秀,hzw大佬。
#include<iostream>
#include<cstdio>
#define ll long long
#define N 10000005
using namespace std;
int n,p,tot;
int phi[N],pri[];
bool mark[N];
ll ans,sum[N];
void getphi()
{
phi[]=;
for(int i=;i<=n;i++)
{
if(!mark[i]){phi[i]=i-;pri[++tot]=i;}
for(int j=;j<=tot;j++)
{
int x=pri[j];
if(i*x>n)break;
mark[i*x]=;
if(i%x==){phi[i*x]=phi[i]*x;break;}
else phi[i*x]=phi[i]*phi[x];
}
}
}
int main()
{
scanf("%d",&n);
getphi();
for(int i=;i<=n;i++)
sum[i]=sum[i-]+phi[i];
for(int i=;i<=tot;i++)
ans+=sum[n/pri[i]]*-;
printf("%lld",ans);
return ;
}
bzoj 2818 GCD 数论 欧拉函数的更多相关文章
- BZOJ 2818 GCD 【欧拉函数 || 莫比乌斯反演】
传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 2818: Gcd Time Limit: 10 Sec Memory Limit ...
- bzoj 2818 gcd 线性欧拉函数
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB[Submit][Status][Discuss] Description 给定整数N,求1< ...
- bzoj 2818 Gcd(欧拉函数 | 莫比乌斯反演)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2818 [题意] 问(x,y)为质数的有序点对的数目. [思路一] 定义f[i]表示i之 ...
- BZOJ 2818 GCD(欧拉函数)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37161 题意:gcd(x, y) = 质数, 1 <= x, ...
- 【BZOJ】2818: Gcd(欧拉函数+质数)
题目 传送门:QWQ 分析 仪仗队 呃,看到题后感觉很像上面的仪仗队. 仪仗队求的是$ gcd(a,b)=1 $ 本题求的是$ gcd(a,b)=m $ 其中m是质数 把 $ gcd(a,b)=1 $ ...
- HYSBZ 2818 Gcd【欧拉函数/莫比乌斯】
I - Gcd HYSBZ - 2818 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Sample In ...
- BZOJ 2818 Gcd 线性欧拉筛(Eratosthenes银幕)
标题效果:定整N(N <= 1e7),乞讨1<=x,y<=N和Gcd(x,y)素数的数(x,y)有多少.. 思考:推,. 建立gcd(x,y) = p,然后,x / p与y / p互 ...
- BZOJ 2818 Gcd 线性欧拉
题意:链接 方法:线性欧拉 解析: 首先列一下表达式 gcd(x,y)=z(z是素数而且x,y<=n). 然后我们能够得到什么呢? gcd(x/z,y/z)=1; 最好还是令y>=x 则能 ...
- 【BZOJ】2818: Gcd(欧拉函数/莫比乌斯)
http://www.lydsy.com/JudgeOnline/problem.php?id=2818 我很sb的丢了原来做的一题上去.. 其实这题可以更简单.. 设 $$f[i]=1+2 \tim ...
随机推荐
- Java-学完一个月总结(javaSe学习路线)
JavaSe的一个月 第一周 0410 基本数据类型:数据类型的转换:运算符:导入删除项目0411 分支结构if else:switch case ;while0412 do while ;for / ...
- [转]IntelliJ IDEA 自定义方法注解模板
IntelliJ IDEA 自定义方法注解模板 置顶2017年08月02日 18:04:36 阅读数:32592 最近没啥事开始正式用Eclipse 转入 idea工具阵营,毕竟有70%的开发者在使用 ...
- css 尺寸、边框、内边距、背景以及css Sprite
上节课回顾: HTML标签: 格式排版 p 段落 双br 换行 单hr 分隔线 单h1~h6 标题 双pre 原样格式化输出 双div 标签,无任何特殊意义 HTML标签 :文本 <em> ...
- re正则表达式公式讲解1
常用的表达式一些规则 1.“.” 匹配出了\n之外的任意一个字符,包括特殊字符 有几个·就匹配几个字符. import re print(re.search("."," ...
- spring boot使用jpa查询mysql数据库的视图时不报错,但查询结果数据总是重复第一条
问题描述: 在数据库里查询到的结果是正常显示的 在程序中返回的结果: 解决方法: 添加行号作为主键: 解决! 我明明是前端啊前端,为啥在搞后台....,总感觉我要在向全栈进发,希望自己有朝一日真的能成 ...
- win7创建无线(WIFI)cmd命令
1.创建无限热点:netsh wlan set hostednetwork mode=allow ssid=name key=12345678. 2.承载网络:netsh wlan start(关闭s ...
- 打开centos直接进入文本模式命令行
2.打开/etc/inittab 文件 #vim /etc/inittab3.在默认的 run level 设置中,可以看到第一行书写如:id:5:initdefault:(默认的 run level ...
- COGS 942. [東方S3] 比那名居天子
Problem 1 比那名居天子(tenshi.cpp/c/pas) 题目描述 在幻想乡,比那名居天子是管理着『要石』的天人.『要石』是能够引发和镇压地震的存在,当然也可以用来改变地形.因为在幻想乡引 ...
- 管道命令和xargs的区别(经典解释) 自己的总结
1. 简介 之所以能用到这个命令,关键是由于很多命令不支 持|管道来传递参数,而日常工作中有有这个必要, 所以就有了xargs命令,例如:find /sbin -perm +700 |ls -l 这个 ...
- Android Studio -自定义LogCat的颜色
博文地址 http://www.cnblogs.com/Loonger/p/6285344.html 先看看效果 (设置中的显示,下图) 步骤如下 File->Settings 或Ctrl + ...