博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
luogu 2257 YY的GCD
阅读量:4358 次
发布时间:2019-06-07

本文共 1223 字,大约阅读时间需要 4 分钟。

题目描述:

给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对。

题解:

代码:

#include
#include
#include
using namespace std;#define N 10000500#define ll long longint pri[N/10],cnt,mu[N];ll f[N],F[N];bool vis[N];void get_mu(){ mu[1]=1; for(int i=2;i<=10000000;i++) { if(!vis[i]) { pri[++cnt] = i; mu[i]=-1; } for(int j=1;j<=cnt&&1ll*pri[j]*i<=10000000ll;j++) { vis[pri[j]*i]=1; if(i%pri[j])mu[i*pri[j]]=-mu[i]; else { mu[i*pri[j]]=0; break; } } } for(int i=1;i<=cnt;i++) { for(int j=1;j*pri[i]<=10000000;j++) { f[j*pri[i]]+=mu[j]; } } for(int i=1;i<=10000000;i++) F[i]=F[i-1]+f[i];}int T,n,m;int main(){ get_mu(); scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); ll ans = 0; int nxt = 1; for(int i=1;i<=n&&i<=m;i=nxt+1) { nxt = min(n/(n/i),m/(m/i)); ans+=(F[nxt]-F[i-1])*(n/i)*(m/i); } printf("%lld\n",ans); } return 0;}

 

转载于:https://www.cnblogs.com/LiGuanlin1124/p/10045997.html

你可能感兴趣的文章
64:数据流中的中位数
查看>>
常用排序算法之--快速排序
查看>>
php实现设计模式之 简单工厂模式
查看>>
学好Mac常用命令,助力iOS开发
查看>>
asp.net core 通过 TeamCity 实现持续集成笔记
查看>>
定制起始url(scrapy_redis)
查看>>
VS2015 遇到异常。这可能是由某个扩展导致的
查看>>
Tomcat启动时选择加载项目
查看>>
android博客
查看>>
Shell排序——软考(五)
查看>>
jQuery EasyUI API 中文文档 - 搜索框
查看>>
盘古分词,记灵一下
查看>>
PHP投票练习
查看>>
Java事件处理机制- 事件监听器的四种实现方式【转】
查看>>
CSS3伪类选择器:nth-child()
查看>>
POJ2524——Ubiquitous Religions
查看>>
UVA548——Tree(中后序建树+DFS)
查看>>
Hbase配置(伪分布式模式)
查看>>
Java导包问题
查看>>
python基础-协程函数、递归、模块、包等内容
查看>>