BZOJ2818: 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
Solution
看着黄学长的题解才弄懂这道题的QAQ,我数论真的好差啊...
求$gcd(x,y)=p$,p为素数的x,y取值有多少种
每个素数p对答案的贡献是$1$~$n/p$的有序互质对个数
我们可以设$y>=x$,显然当$x$确定的时候这个素数$p$的贡献就是$\phi(y)$
所以有序质数对的个数为$\sum_{i=1}^{i<=n/p}{\phi(i)}*2-1$
(有序质数对所以乘2,然后(1,1)在这里被算了2次所以-1)
#include <bits/stdc++.h> using namespace std ; #define ll long long
const int N = 1e7+ ; int n , tot ;
int phi[ N ] , p[ N ] ;
ll c[ N ] , ans ;
bool v[ N ] ; void eular() {
phi[ ] = ;
for( int i = ; i <= n ; i ++ ) {
if( !v[ i ] ) {
phi[ i ] = i - ;
p[ ++ tot ] = i ;
}
for( int j = ; j <= tot ; j ++ ) {
if( p[ j ] * i > n ) break ;
v[ i * p[ j ] ] = ;
if( i % p[ j ] == ) { phi[ i * p[ j ] ] = phi[ i ] * p[ j ] ; break ; }
else phi[ i * p[ j ] ] = phi[ i ] * phi[ p[ j ] ] ;
}
}
} int main() {
scanf( "%d" , &n ) ;
eular() ;
for( int i = ; i <= n ; i ++ )
c[ i ] = c[ i - ] + phi[ i ] ;
for( int i = ; i <= tot ; i ++ ) {
ans += c[ n / p[ i ] ] * - ;
}
printf( "%lld\n" , ans ) ;
}
BZOJ2818: Gcd 欧拉函数的更多相关文章
- Bzoj-2818 Gcd 欧拉函数
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2818 题意:给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x ...
- BZOJ2818: Gcd 欧拉函数求前缀和
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 如果两个数的x,y最大公约数是z,那么x/z,y/z一定是互质的 然后找到所有的素数,然后用欧拉函数求一 ...
- 洛谷P2568 GCD (欧拉函数/莫比乌斯反演)
P2568 GCD 题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入输出样例 输入 ...
- BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4436 Solved: 1957[Submit][Status][Discuss ...
- POJ 2773 Happy 2006【GCD/欧拉函数】
根据欧几里德算法,gcd(a,b)=gcd(a+b*t,b) 如果a和b互质,则a+b*t和b也互质,即与a互质的数对a取模具有周期性. 所以只要求出小于n且与n互质的元素即可. #include&l ...
- HDU 2588 GCD (欧拉函数)
GCD Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Status De ...
- hdu2588 gcd 欧拉函数
GCD Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 1695 GCD 欧拉函数+容斥定理
输入a b c d k求有多少对x y 使得x在a-b区间 y在c-d区间 gcd(x, y) = k 此外a和c一定是1 由于gcd(x, y) == k 将b和d都除以k 题目转化为1到b/k 和 ...
- HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
随机推荐
- JS模块化编程(一)
需求背景 // 实际开发常需要将一些公用方法打包放在一个js文件,写法大致如下 function f1(){ // ... } function f2(){ ...
- 泛型T和通配符?的区别
这里如果是泛型T的话,那么创建该类的时候就需要指定类型,而通配符不需要.
- Loadrunner之https协议录制回放报错如何解决?(九)
一.录制中遇到报错27778的问题(如下图1),即关于录制的链接为https开头的问题,分两个步骤解决,如下: 图1 https访问报错解决步骤如下: 1.修改Vuser-->Run-time ...
- Percona Data Recovery Tool 单表恢复
前几天写过update或者delete忘加where条件的数据恢复.今天介绍一款开源的MySQL数据库InnoDB数据恢复工具:innodb-tools,它通过从原始数据文件中提取表的行记录,实现从丢 ...
- 从MySQL开发规范处看创业
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/n88Lpo/article/details/78099185 作者:唐勇.深圳市环球易购.MySQL ...
- 在sublime3中docblockr插件配置apidoc接口文档注释模板
写在前面: 将进行3个步骤配置 1.在sublime3中安装插件docblockr,可以参考http://www.cnblogs.com/jiangxiaobo/p/8327709.html 2.安装 ...
- windows安装并破解navicat.
1:下载以下两个文件. patchNavicat.exe: https://pan.baidu.com/s/1ZtV20GUGfZHcXHRTEb5tYg navicatforMysql.exe: ...
- html的img标签 强大的title
示例: <img src="smiley-2.gif" alt="Smiley face" width="42" height=&qu ...
- iOS UI基础-4.0应用程序管理
功能与界面 功能分析: 以九宫格的形式展示应用信息 点击下载按钮后,做出相应的操作 步骤分析: 加载应用信息 根据应用的个数创建对应的view 监听下载按钮点击 整个应用界面: 程序实现 思路 UI布 ...
- html07
1.复习js的外部对象,DOM,BOMBOM window -location -Location对象 : href reload() -history -History :back() forwar ...