题目链接:https://cn.vjudge.net/problem/Gym-101982B

题目大意: 给你(a,b)和(c,d)这两个区间,然后问你这两个区间中互素的对数是多少.

具体思路:和我上一篇写莫比乌斯入门的博客的思路一样,不过就是加了下限,原来的那一篇的下限是1,现在这一篇的下限是题目给的数.所以这一块就需要考虑到去重.

第一步,我们首先确定一个较小的区间,假设让第一个区间是上限最小的,然后我们当前就有两个区间(a,b)和(c,d) 此时(b<d).

我们首先算(1,b)和(1,d)中满足情况的对数.然后这中间就会有一部分不符合条件的,( 1 , a )和 (1, d )这块的不符合, (1,c)和 (1,d)这个区域也是多算上的,但是,如果讲这两部分都给删掉的话,那么 (1,a)和(1,c)这个区域就会被删去两遍,所以需要再加上一遍.

AC代码:

#include<iostream>
#include<cmath>
#include<string>
#include<algorithm>
#include<cstring>
#include<stdio.h>
using namespace std;
# define ll long long
# define inf 0x3f3f3f3f
const int maxn =10000000+100;
# define ll long long
ll mu[maxn];
ll vis[maxn];
ll prim[maxn];
void Get_mu(ll n)
{
mu[1]=1;
int cnt=0;
for(ll i=2; i<n; i++)
{
if(!vis[i])
{
prim[cnt++]=i;
mu[i]=-1;
}
for(ll j=0; j<cnt; j++)
{
ll k=i*prim[j];
if(k>n)break;
vis[k]=1;
if(i%prim[j])
{
mu[k]=-mu[i];
}
else
{
mu[k]=0;
break;
}
}
}
}
int main()
{
Get_mu(maxn);
int a,b,c,d;
cin>>a>>b>>c>>d;
ll ans=0;
if(b>d){
swap(a,c);
swap(b,d);
}// 注意如果交换的都需要交换.
for(int i=1; i<=b; i++)
{
ans+=mu[i]*(b/i)*(d/i);
}
for(int i=1; i<=a-1; i++)
{
ans-=mu[i]*((a-1)/i)*(d/i);
}
for(int i=1; i<=c-1; i++)
{
ans-=mu[i]*((c-1)/i)*(b/i);
}
int temp=min(a,c);
for(int i=1; i<=temp-1; i++)
{
ans+=mu[i]*((a-1)/i)*((c-1)/i);
}
cout<<ans<<endl;
return 0;
}

最新文章

  1. LInux Shell 快捷键
  2. 在Autodesk应用程序商店发布基于浏览器的Web应用程序
  3. B - I Hate It
  4. Hibernate笔记——Hibernate介绍和初次环境配置
  5. 利用dns解析来实现网站的负载均衡
  6. Bridging signals ZOJ 3627 POJ1631 HDU1950
  7. C#中反射接受的字符串需要满足的Backus-Naur Form语法
  8. springMVC servlet 静态资源加载
  9. ArcGIS Desktop 10.5 安装实录
  10. Django App(四) Submit a form
  11. 利用ZYNQ SOC快速打开算法验证通路(5)——system generator算法IP导入IP integrator
  12. container(容器),injection(注入)
  13. css3 媒体查询常用适配
  14. V$SQLAREA
  15. easyGUI 用法介绍
  16. OpenGL——折线图柱状图饼图绘制
  17. 使用Python自带difflib模块进行文件内容差异对比
  18. selenium 定时任务
  19. IIS7.5配置Gzip压缩解决方案(转)
  20. 基于Vue的弹框实例

热门文章

  1. EasyUI使用DataGrid向服务器传参
  2. java 基础 --final--008
  3. NIO网络编程中重复触发读(写)事件
  4. java 重写父类构造器
  5. 【BZOJ1001】狼抓兔子(平面图转对偶图,最短路)
  6. luoguP5105 不强制在线的动态快速排序
  7. 【bzoj2318】game with probability
  8. PHP 多线程采集
  9. javaWeb中,文件上传和下载
  10. 「Django」rest_framework学习系列-渲染器