题目描述:戳这里

题解:

1 a + 1 b = 1 c \frac{1}{a}+\frac{1}{b}=\frac{1}{c} a1​+b1​=c1​
( a + b ) c = a b (a+b)c=ab (a+b)c=ab
令 g = g c d ( a , b ) , A = a g , B = b g 令g=gcd(a,b),A=\frac{a}{g},B=\frac{b}{g} 令g=gcd(a,b),A=ga​,B=gb​
( A + B ) c = A B g (A+B)c=ABg (A+B)c=ABg
由 于 g 要 整 除 等 式 左 边 的 东 西 , 然 而 g 不 整 除 c , 所 以 g 整 除 A + B , 那 么 可 以 除 过 去 由于g要整除等式左边的东西,然而g不整除c,所以g整除A+B,那么可以除过去 由于g要整除等式左边的东西,然而g不整除c,所以g整除A+B,那么可以除过去
A + B g = A B c \frac{A+B}{g}=\frac{AB}{c} gA+B​=cAB​
我们假设这个式子两边都等于p。
那么如果 p ! = 1 p!=1 p!=1,说明p整除A或者B,p不可能同时整除A和B,因为A、B互质。但是p要整除 A + B A+B A+B,所以不可能成立。
所以可以推出 p = 1 p=1 p=1。
那么就可以推出两条式子:
A + B = g , 即 是 : a + b = g 2 A+B=g,即是:a+b=g^2 A+B=g,即是:a+b=g2
c = A B , 就 是 : c = a b g 2 c=AB,就是:c=\frac{ab}{g^2} c=AB,就是:c=g2ab​

那么接下来问题就比较好处理了:
由于 a , b &lt; = 1 0 12 a,b&lt;=10^{12} a,b<=1012,那么 a + b = 2 ∗ 1 0 12 = 1 0 6 级 别 \sqrt{a+b}=\sqrt{2*10^{12}}=10^6级别 a+b ​=2∗1012 ​=106级别
我们先枚举gcd(a,b)=g,然后假设a=i*g,那么可以列出和式:
∑ g = 1 2 n ∑ i = 1 ⌊ n g ⌋ [ g c d ( i g , g 2 − i g ) = g ] \sum_{g=1}^{\sqrt{2n}}\sum_{i=1}^{\lfloor{\frac{n}{g}}\rfloor}[gcd(ig,g^2-ig)=g] g=1∑2n ​​i=1∑⌊gn​⌋​[gcd(ig,g2−ig)=g]
化简一下:
∑ g = 1 2 n ∑ i = 1 ⌊ n g ⌋ [ g c d ( i , g − i ) = 1 ] \sum_{g=1}^{\sqrt{2n}}\sum_{i=1}^{\lfloor{\frac{n}{g}}\rfloor}[gcd(i,g-i)=1] g=1∑2n ​​i=1∑⌊gn​⌋​[gcd(i,g−i)=1]
由于辗转相减的性质,可知:
∑ g = 1 2 n ∑ i = 1 ⌊ n g ⌋ [ g c d ( i , g ) = 1 ] \sum_{g=1}^{\sqrt{2n}}\sum_{i=1}^{\lfloor{\frac{n}{g}}\rfloor}[gcd(i,g)=1] g=1∑2n ​​i=1∑⌊gn​⌋​[gcd(i,g)=1]
即是求一定范围内与g互质的数的个数。
前面还有一些小问题,实际上我们对i的限制范围有一些不准确。
1 &lt; = g 2 − i g &lt; = n 1&lt;=g^2-ig&lt;=n 1<=g2−ig<=n
g − ⌊ n g ⌋ &lt; = i &lt; = g − 1 g-\lfloor\frac{n}{g}\rfloor&lt;=i&lt;=g-1 g−⌊gn​⌋<=i<=g−1
与原范围合并一下,可以化简为:
m a x ( 1 , g − ⌊ n g ⌋ ) &lt; = i &lt; = m i n ( g − 1 , ⌊ n g ⌋ ) max(1,g-\lfloor\frac{n}{g}\rfloor)&lt;=i&lt;=min(g-1,\lfloor\frac{n}{g}\rfloor) max(1,g−⌊gn​⌋)<=i<=min(g−1,⌊gn​⌋)
所以原式可以写成:
∑ g = 1 2 n ∑ i = m a x ( 1 , g − ⌊ n g ⌋ ) m i n ( g − 1 , ⌊ n g ⌋ ) [ g c d ( i , g ) = 1 ] \sum_{g=1}^{\sqrt{2n}}\sum_{i=max(1,g-\lfloor\frac{n}{g}\rfloor)}^{min(g-1,\lfloor\frac{n}{g}\rfloor)}[gcd(i,g)=1] g=1∑2n ​​i=max(1,g−⌊gn​⌋)∑min(g−1,⌊gn​⌋)​[gcd(i,g)=1]

接下来只要求 g c d ( i , g ) = 1 gcd(i,g)=1 gcd(i,g)=1的对数了。
这个可以直接用莫比乌斯反演,对r搞一下,l-1搞一下,然后相减即可。
时间复杂度 O ( n l o g ( n ) ) O(\sqrt{n}log(\sqrt{n})) O(n ​log(n ​))

代码如下:

#pragma GCC optimze("Ofast","inline")
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=2e6+5;
ll n,ans;
int mu[maxn],su[maxn],lnk[maxn],nxt[16*maxn],son[16*maxn],tot;
bool vis[maxn];
void make_mu(){mu[1]=1; int m=0;for (int i=2;i<=2e6;i++){if (!vis[i]) su[++m]=i,mu[i]=-1;for (int j=1;j<=m&&1ll*su[j]*i<=2e6;j++){vis[i*su[j]]=1;if (i%su[j]==0) {mu[i*su[j]]=0; break;}else mu[i*su[j]]=-mu[i];}}
}
ll doit(ll x,ll y){ll ret=0;for (int j=lnk[y];j;j=nxt[j])if (y%son[j]==0) ret+=mu[son[j]]*(x/son[j]);return ret;
}
void add(int x,int y){son[++tot]=y,nxt[tot]=lnk[x],lnk[x]=tot;
}
int main(){scanf("%lld",&n);make_mu();for (int i=1;1ll*i*i<=2*n;i++)if(mu[i])for (int j=1;1ll*j*i*j*i<=2*n;j++)add(i*j,i);for (ll g=1ll;g*g<=2*n;g++)ans+=doit(min(n/g,g-1),g)-doit(max(1ll,g-n/g)-1,g);printf("%lld\n",ans);return 0;
}

LOJ6482. LJJ 爱数数相关推荐

  1. 「LOJ6482」LJJ爱数数

    「LOJ6482」LJJ爱数数 解题思路 : 打表发现两个数 \(a, b\) 合法的充要条件是(我不管,我就是打表过的): \[ a + b = \text{gcd}(a, b)^2 \] 设 \( ...

  2. P4844 LJJ爱数数

    题目 P4844 LJJ爱数数 本想找到莫比乌斯反演水题练练,结果直接用了两个多小时才做完 做法 \(\sum\limits_{a=1}^n\sum\limits_{b=1}^n\sum\limits ...

  3. P4844 LJJ爱数数 数论

    思路: 化简后得到(a+b)c=ab,设g=(a,b),A=a/g,B=b/g,则g(A+B)c=ABg^2,即(A+B)c=ABg 由题目已知条件:(a,b,c)=1,即(g,c)=1,g|(A+B ...

  4. 中国石油大学(北京)第三届“骏码杯”程序设计竞赛(同步赛)——C 小菲爱数数

    题目链接:C-小菲爱数数_中国石油大学(北京)第三届"骏码杯"程序设计竞赛(同步赛) (nowcoder.com) 思路好像和题解不一样,但是a了. 主要思路:首先肯定是要先把素数 ...

  5. 华为手机8大超实用功能!省心省力省钱!数数你用过几个

    由于种种客观因素,今年好多小伙伴都换了华为手机, 可换了之后,却有好多功能不会用,或者说还从没发现, 那实在是太暴殄天物啦! 本文就用动图来直观演示--那些不为人知的8大超实用功能吧! 涵盖学习工作生 ...

  6. 数数题(计数类 DP)做题记录

    数数题(计数类 DP)做题记录 CF1657E Star MST 我们称张无向完全图是美丽的当且仅当:所有和 \(1\) 相连的边的边权之和等于这张完全图的最小生成树的边权之和. 完全图点数为 \(n ...

  7. NOIP模拟测试29「爬山·学数数·七十和十七」

    爬山题解不想写了 学数数 离散化然后找到以每一个值为最大值的连续子段有多少个,然后开个桶维护 那么怎么找以每一个值为最大值的连续子段个数 方法1(我的极笨的方法) 考试时我的丑陋思路, 定义极左值为左 ...

  8. 「SDOI2014」数数 解题报告

    「SDOI2014」数数 题目描述 我们称一个正整数 \(N\) 是幸运数,当且仅当它的十进制表示中不包含数字串集合 \(S\) 中任意一个元素作为其子串. 例如当 \(S=(\)22, 333, 0 ...

  9. CSDN挑战编程——《金色十月线上编程比赛第一题:小女孩数数》

    金色十月线上编程比赛第一题:小女孩数数 题目详情: [金色十月线上编程比赛规则] 一个小女孩正在用左手手指数数,从1数到n.她从拇指算作1开始数起,然后,食指为2,中指为3,无名指为4,小指为5.接下 ...

最新文章

  1. Linux 的文件权限与目录配置
  2. 从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
  3. C语言技巧之长度为0的数组
  4. android应用崩溃的调试方法
  5. jquery 滚动条插件
  6. python刷b站教程_【Python】【学习资源】B站上的Python学习资源
  7. 几个用于更精细判断敛散性的级数
  8. elment-ui的table组件多行合并
  9. 树莓派 Raspberry-Pi 折腾系列:系统安装及一些必要的配置
  10. 缠论中枢python源码_缠论中枢主图指标 源码 通达信 贴图 自动画笔
  11. 计算机管理显示磁盘未知,磁盘未知,未初始化或未分配问题的解决方案
  12. 应用树莓派GPIO完成智能红绿灯系统
  13. 【学习笔记】C++STL和泛型编程-侯捷
  14. sklearn之make_blobs:产生数据集
  15. Qt编写自定义控件37-发光按钮(会呼吸的痛)
  16. 如何从网上下载一段视频(iawia002)
  17. java.security.InvalidKeyException:illegal Key Size 报错解决
  18. 计算机音乐谱病名为爱,天谕手游病名为爱乐谱代码是什么-天谕手游病名为爱乐谱代码分享_快吧手游...
  19. Tiva单片机——简易示波器(UART串口屏)
  20. PMP学员:项目管理的重要性

热门文章

  1. 初等几何(1):三角形、四边形、正多边形
  2. NGUI用onSelect检测(监听)Input 控件失焦(非选中状态)
  3. 关于学习生活看法的维度
  4. 文件夹打包成pkg_linux如何解压tar.gz到指定文件夹或目录
  5. Winhex数据粘贴方法
  6. linux内存和磁盘空间不足解决办法
  7. 遇到CPU Exception,我该怎么办?
  8. wireshark 抓 蓝牙数据_使用Wireshark 抓取数据包
  9. 达梦数据库DCA取证培训总结
  10. 数据类型_number_number数据类型概括