题目

题意:就是问在一个$ 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. [HTML5] Native lazy-loading for the web

    According to HTTPArchive, images are the most requested asset type for most websites and usually tak ...

  2. 在x64计算机上捕获32位进程的内存转储

    这是一个我经常遇到的问题,我们经常会遇到这样的情况:我们必须重新捕获内存转储,因为内存转储是以“错误”的方式捕获的.简而言之:如果在64位计算机上执行32位进程,则需要使用允许创建32位转储的工具捕获 ...

  3. cube.js 最近版本的一些更新

    有一段时间没有关注cube.js 了,刚好晚上收到一封来自官方的更新介绍,这里简单说明下 更多的数据驱动支持 bigquey, clickhouse snowflake,presto (很棒),hiv ...

  4. 在触发器中使用{ITEM.LASTVALUE}时在首页问题栏信息显示不全

    在触发器中使用了系统宏变量,当条件满足时,如果这个宏代表的内容超过了20个字符,那么在首页信息就显示不全,会有一堆省略号 感谢https://blog.csdn.net/yu415907917/art ...

  5. apache-tomcat安装

    1.下载apache-tomcat 网址:http://tomcat.apache.org 下载 tomcat 9.0.29 2.解压后设置控制台显示中文不乱码 在 apache-tomcat-9.0 ...

  6. CSS样式表书写位置

    一.内嵌式写法:样式只作用于当前文件,没有真正实现结构表现分离. <head> <style type=”text/css”> 样式表写法 </style> < ...

  7. python 获取 一个正整数的二进制

    #coding=utf- def getbin(a): out = "" # 辗转相除法 ): div = a mod = a % out += str(mod) ): break ...

  8. D3.js的v5版本入门教程(第三章)—— 选择元素和绑定数据

    D3.js的v5版本入门教程(第三章) 在D3.js中,选择元素和绑定元素是最基本的内容,也是很重要的内容,等你看完整个教程后你会发现,这些D3.js教程都是在选择元素和绑定元素的基础上展开后续工作的 ...

  9. CTF SSTI(服务器模板注入)

    目录 基础 一些姿势 1.config 2.self 3.[].() 3.url_for, g, request, namespace, lipsum, range, session, dict, g ...

  10. [Beta]第六次 Scrum Meeting

    [Beta]第六次 Scrum Meeting 写在前面 会议时间 会议时长 会议地点 2019/5/14 22:00 30min 大运村公寓6F寝室 附Github仓库:WEDO 例会照片 (两人回 ...