HYSBZ - 2818 Gcd —— 莫比乌斯反演
2818: Gcd
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 8172 Solved: 3609Description
给定整数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
莫比乌斯反演模板题
代码里用到了分块的思想,
因为对于1<=i<=n中的每个i,n/i是非严格递减的,所以会出现一个区间的n/i是相同的,这样我们就可以预处理mu函数的前n项和,然后由这样的分块思想一次计算一个区间的数,使复杂度大大减少。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <cmath>
#include <vector>
#include <bitset>
#define max_ 11000000
#define inf 0x3f3f3f3f
#define ll long long
#define les 1e-8
#define mod 364875103
using namespace std;
bool vis[max_];
int prime[max_];
int pl=0;
ll mu[max_];
ll pre[max_];
int n;
void getmu()
{mu[1]=1;pre[1]=1;for(int i=2;i<max_;i++){if(vis[i]==false){prime[++pl]=i;mu[i]=-1;}for(int j=1;j<=pl&&prime[j]*i<max_;j++){vis[prime[j]*i]=true;if(i%prime[j]==0){mu[i*prime[j]]=0;break;}elsemu[prime[j]*i]=-mu[i];}pre[i]=pre[i-1]+mu[i];}
}
ll cal(int n,int m)
{if(n>m)swap(n,m);ll ans=0;int end;for(int i=1;i<=n;i=end+1){end=min(n/(n/i),m/(m/i));ans+=(pre[end]-pre[i-1])*(n/i)*(m/i);}return ans;
}
int main(int argc, char const *argv[]) {getmu();scanf("%d",&n);ll ans=0;for(int i=1;i<=pl&&prime[i]<=n;i++){ans+=cal(n/prime[i],n/prime[i]);}printf("%lld\n",ans );return 0;
}
HYSBZ - 2818 Gcd —— 莫比乌斯反演相关推荐
- BZOJ 2820 YY的GCD 莫比乌斯反演
2820: YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y) ...
- BZOJ 2820 YY的GCD 莫比乌斯反演
题意:链接 方法:莫比乌斯反演 解析: 这题跟上一篇博客有一点差别,当然我们能够考虑枚举素数这个大暴力.只是当你A掉这道题后发现正解?都将近5s时.就放弃了这个念头. 相同的式子我们能够直接搬过来.p ...
- 【bzoj2820】YY的GCD 莫比乌斯反演
题目描述 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必然不会了,于是 ...
- YY的GCD 莫比乌斯反演
---题面--- 题解: $ans = \sum_{x = 1}^{n}\sum_{y = 1}^{m}\sum_{i = 1}^{k}[gcd(x, y) == p_{i}]$其中k为质数个数 $$ ...
- bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...
- [洛谷P2257] YY的GCD (莫比乌斯反演)
YY的GCD 题目描述 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 kAc这种傻× ...
- HYSBZ 2818 Gcd
Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sa ...
- HYSBZ - 1101——莫比乌斯反演
[题目描述] HYSBZ - 1101 [题目分析] 昨天测试出了一道差不多的题目,我只能想到暴力,各种优化,最后都是运行了好久TLE,最后才知道要用到莫比乌斯反演,就想着今天研究一下,得出的结论就是 ...
- 【Project Euler】530 GCD of Divisors 莫比乌斯反演
[题目]GCD of Divisors [题意]给定f(n)=Σd|n gcd(d,n/d)的前缀和F(n),n=10^15. [算法]莫比乌斯反演 [题解]参考:任之洲数论函数.pdf 这个范围显然 ...
最新文章
- StarlingMVC简介,原理解说及示例源码
- 基于GUI的mcc编译和dll生成
- 同时运行多个scrapy爬虫的几种方法(自定义scrapy项目命令)
- 2.1.1 正则化基本介绍
- springcloud微服务多节点高性能、高可用、高并发部署
- android 多媒体文件信息,Android如何获取多媒体文件信息
- 给定一个介于0到1之间的实数(如0.625),打印他的二进制表示
- (六)Value Function Approximation-LSPI code (3)
- 百度地图坐标和高德地图坐标转换
- 计算机一级考试基本操作是什么,计算机一级等级考试试题基本操作总结
- 2020年最全易语言安装与配置使用教程
- 二元函数可导与可微的关系_如何理解多元函数可微与可偏导的关系?
- 用java编写中国象棋_如何用Java实现网络中国象棋室(一)
- AMD64(x86_64)架构abi文档:上
- 内向性格的人应该如何选择职业?
- python数字华容道
- The specified module could not be found的解决办法
- 多线程编程核心技术总结(读周志明书籍的总结)
- 热敏电阻VS模拟温度传感器
- 锂电池采购成本多次上涨,如何利用数字化采购管理系统高效降本?