题目

题意:就是问在一个$ n* m $的矩阵中站在 $ (0,0) $ 能看到几个整数点。

很明显如果有两个平行向量 $ \vec{a}=(x_1,y_1) $ ,$ \vec{b}=(x_2,y_2) $ 那么很明显 $ (x_1,y_1) ,(x_2,y_2) $ 满足$ x_1=k* x_2 , y_1=k * y_2 $ 。那么两个点最多只能看到一个点,那么我们的目的就是找到有多少个点 $ (x,y) $ 中 $ x,y $ 互质 即 $ gcd(x,y)=1 $

那么我们的问题就转变为 $ (1,n) $ 中有多少个数与 $ (1,m) $ 中的互质,我们假设从 $ (1,n) $ 中选出来一个数 $ i $ 那么我们怎么去判断互质的个数,进行素因子分解,则小于 $ m $ 能被 $ i $ 的素因子整除的数就不是与 $ i $互质的数,这是我们用容斥就可以求出总数。

所以我们只要枚举 $ i $ 即可求出解,容斥怎么样加上有一个质因子的解的个数,减去有两个个质因子解的个数,再加上有三个质因子的解的个数....奇加偶减,就是如果一个数有 $ i $ 个质因数那么我们去判断 $ i $ 的奇偶性,如果是奇数就加上偶数减去,最后用n减去不是 $ i $ 互质的就是最后与 $ i $ 互质的个数了。

代码

#include<bits/stdc++.h>
using namespace std;
int T,n,m,k,prime[40];
long long ans;
int dfs(int n,int m){
k=0;
for(int i=2;i*i<=m;++i){
if(m%i) continue;
while(m%i==0) m/=i;
prime[k++]=i;
}if(m!=1) prime[k++]=m;
int add=0;
for(int i=1;i<(1<<k);++i){//分解出来k-1个质数,枚举所有可能的组合情况 2^(k-1)
int tmp=1,cnt=0;
for(int j=0;j<k;++j){
if(!((i>>j)&1)) continue;//没有选这个数
tmp*=prime[j];
++cnt;
}
if(cnt&1) add+=n/tmp;//奇加偶减
else add-=n/tmp;
}
return n-add;//减去不满足的就是满足的
}
int main(){
scanf("%d",&T);
while(T--){
ans=0;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;++i){//固定m枚举i
ans+=dfs(m,i);
}printf("%lld\n",ans);
}
return 0;
}

hdu 2841 题解的更多相关文章

  1. HDU 2841 Visible Trees 数论+容斥原理

    H - Visible Trees Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  2. C - Visible Trees HDU - 2841 -莫比乌斯函数-容斥

    C - Visible Trees HDU - 2841 思路 :被挡住的那些点(x , y)肯定是 x 与 y不互质.能够由其他坐标的倍数表示,所以就转化成了求那些点 x,y互质 也就是在 1 - ...

  3. HDU 2841 容斥 或 反演

    $n,m <= 1e5$ ,$i<=n$,$j<=m$,求$(i⊥j)$对数 /** @Date : 2017-09-26 23:01:05 * @FileName: HDU 284 ...

  4. HDU 2841 Visible Trees(容斥)题解

    题意:有一块(1,1)到(m,n)的地,从(0,0)看能看到几块(如果两块地到看的地方三点一线,后面的地都看不到). 思路:一开始是想不到容斥...后来发现被遮住的地都有一个特点,若(a,b)有gcd ...

  5. HDU 2841 Visible Trees(莫比乌斯反演)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2841 题意:给n*m的矩阵(从(1,1)开始编号)格子,每个格子有一棵树,人站在(0,0)的位置,求可 ...

  6. - Visible Trees HDU - 2841 容斥原理

    题意: 给你一个n*m的矩形,在1到m行,和1到n列上都有一棵树,问你站在(0,0)位置能看到多少棵树 题解: 用(x,y)表示某棵树的位置,那么只要x与y互质,那么这棵树就能被看到.不互质的话说明前 ...

  7. HDU 2023题解分析

    我想说这道题我还没弄明白我错哪了,交了20多遍一直都是Runtime Error,改了N次还是不对,后来搜了一下,说是数组开小了,又把数组开大,还不对,又改发现一个平均值求错,再改,还不对,洗洗睡吧. ...

  8. 2014年北京网络赛 Instrusive HDU 5040 题解 优先队列

    网赛的时候看了这道题,发现就是平常的那种基础搜索题. 由于加了一个特殊条件:可以一次消耗3秒或原地停留1秒. 那就不能使用简单的队列了,需要使用优先队列才行. 题意 告诉一副地图:一个起点,一个终点, ...

  9. HDU 2841 Visible Trees(容斥定理)

    Visible Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

随机推荐

  1. 学习Spring-Data-Jpa(十二)---投影Projections-对查询结果的扩展

    Spring-Data数据查询方法的返回通常的是Repository管理的聚合根的一个或多个实例.但是,有时候我们只需要返回某些特定的属性,不需要全部返回,或者只返回一些复合型的字段.Spring-D ...

  2. OLED液晶屏幕(0)自动获取12ic地址液晶屏幕

    . 烧录 串口可以看到输出的地址 #include <Wire.h> void setup(){ Wire.begin(); Serial.begin(9600); Serial.prin ...

  3. 【转载】Visual Studio(VS) F12 查看DLL源代码

    https://www.cnblogs.com/zhaoqingqing/p/6751757.html esharper官网:https://www.jetbrains.com/resharper/ ...

  4. “OKR播种机”JOHN DOERR–目标是对抗纷乱思绪的一针疫苗

    OKR培养出疯狂的想法,再加上对的人,奇迹就会出现 约翰·杜尔是美国最有影响力.最具创意.最不拘传统的冒险资本投资家之一.在短短10年内创造了高达1,000亿美元的经济价值.迄今为止,他已向 250家 ...

  5. BZOJ 4890: [Tjoi2017]城市 树形dp

    标签:树形dp,枚举,树的直径 一上来看到这个题就慌了,只想到了 $O(n^3)$ 的做法. 碰到这种题时要一步一步冷静地去分析,观察数据范围. 首先,$n\leqslant 5000$,所以可以先 ...

  6. k8s 基础概念

    摘录自k8s中文社区https://www.kubernetes.org.cn/course kubernetes 源自希腊文,意为舵手,k与s之间是8个字母,所以也叫k8s, docker就像一个个 ...

  7. Web前端鼠标悬停实现显示与隐藏效果

    css定义,偏移量,相对定位,绝对定位 显示与隐藏 二维码相对于微信图标定位 鼠标悬停微信图标上显示 鼠标离开微信图标时隐藏 什么是定位,就是定义网页标签在运行时显示的位置 css提供Position ...

  8. Java int 与 Integer 区别

    学习借鉴(其实搬了别人的好多)和自己的理解,可能会有较多错误,如有疑问联系我呀. int  是基本数据类型, Integer 是引用类型,也就是一个对象. int 储存的是数值,Integer 储存的 ...

  9. 初始CSS3小知识【99%人不知道的小技巧】

    一.引入样式    1.行内样式表   <h1 style="color: red;font-size: 18px;">10-30</h1>     2.内 ...

  10. hive 整合ranger

    一.安装hive插件 1.解压安装 #  tar zxvf ranger-2.0.0-SNAPSHOT-hive-plugin.tar.gz -C /data1/hadoop/ 2.修改install ...