「LOJ6482」LJJ爱数数

解题思路 :

打表发现两个数 \(a, b\) 合法的充要条件是(我不管,我就是打表过的):
\[ a + b = \text{gcd}(a, b)^2 \]
设 \(g = \text{gcd(a, b)}\) ,那么相当于是要求:
\[ \sum_{g=1}^{\sqrt{2n}}\sum_{i}[\text{gcd}(g^2-ig, ig)=g] \]
化简一波:
\[ \sum_{g=1}^{\sqrt{2n}}\sum_{i}[\text{gcd}(g-i, i)=1] \]
根据辗转相除:
\[ \sum_{g=1}^{\sqrt{2n}}\sum_{i}[\text{gcd}(g, i)=1] \]
考虑 \(i\) 的上界和下界
\[ 1 \leq ig \leq n \\ 1 \leq g^2 -ig \leq n \]
解一下这两个不等式:
\[ \text{max}_i =\min(\lfloor\frac{n}{g}\rfloor,g - 1) \\ \text{min}_i =\max(g-\lfloor\frac{n}{g}\rfloor,1) \]
原来的式子相当于求:
\[ \sum_{g=1}^{\sqrt{2n}}\sum_{i=\text{min}}^{\max}[\text{gcd}(g, i)=1] \]
设 \(f(n)\) 表示 \([1, n]\) 之间与 \(g\) 互质的数的个数,反演一波可以得到:
\[ f(n)= \sum_{d|g} \lfloor \frac{n}{d}\rfloor \mu(d) \]
再化简一波式子:
\[ \sum_{g=1}^{\sqrt{2n}}f(\max) -f(\min-1) \]
总复杂度 \(O(\sqrt{n}logn)\) 。

code

/*program by mangoyang*/
#pragma GCC optimize("Ofast", "inline")
#include<bits/stdc++.h>
#define inf ((int)(1e9))
#define Max(a, b) ((a) > (b) ? (a) : (b))
#define Min(a, b) ((a) < (b) ? (a) : (b))
typedef long long ll;
using namespace std;
template <class T>
inline void read(T &x){int f = 0, ch = 0; x = 0;for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = 1;for(; isdigit(ch); ch = getchar()) x = x * 10 + ch - 48;if(f) x = -x;
}
const int N = 1500005;
int prime[N], d[30000005], tmp[N], mu[N], len[N], b[N], tot;
ll n, ans, m;
inline int solve(int x, int n){int ans = 0;for(register int i = len[x-1] + 1; i <= len[x]; i++) ans += mu[d[i]] * (n / d[i]);return ans;
}
int main(){read(n), mu[1] = 1;for(int i = 2; i < N; i++){if(!b[i]) prime[++tot] = i, mu[i] = -1;for(int j = 1; j <= tot && i * prime[j] < N; j++){b[i*prime[j]] = 1;if(i % prime[j] == 0){ mu[i*prime[j]] = 0; break; }mu[i*prime[j]] = -mu[i];}}m = (int) sqrt(2ll * n);for(int i = 1; i <= m; i++) if(mu[i])for(int j = i; j <= m; j += i) len[j]++;for(int i = 1; i <= m; i++) len[i] += len[i-1];for(int i = 1; i <= m; i++) if(mu[i])for(int j = i; j <= m; j += i) d[(++tmp[j])+len[j-1]] = i;for(int g = 1; g <= m; g++)ans += solve(g, Min(n / g, g - 1)) - solve(g, Max(1, g - n / g) - 1);cout << ans << endl;return 0;
}

转载于:https://www.cnblogs.com/mangoyang/p/10173265.html

「LOJ6482」LJJ爱数数相关推荐

  1. 程序员与「中台」的爱恨交错

    大家好,我是Z哥. 这篇文章比较长,有5200+字,不过希望你能耐心看完,特别是程序员. 中台这个词,最近两年特别火,它的爆发源于2015年张勇在阿里发出的内部信中提到的"大中台,小前台&q ...

  2. 芝诺数解|「十三」一菜一格,百菜百味——重庆川菜数据分析报告

    川 菜 / 数据分析报告 前言 川菜作为中国特色四大菜系之一.它起源于古代的蜀国和巴国,经历了商周至秦的孕育萌芽时期,在汉晋时期已形成初步的轮廓.明朝末年,农民起义军领袖张献忠入川,仅一年四川人民死亡 ...

  3. 用typescript完成倒计时_「干货」将数十万行CoffeeScript代码迁移到TypeScript

    作者 | David Goldstein 译者 | 王强 策划 | 小智 转发链接:https://mp.weixin.qq.com/s/TK7kWXX4hR3e-jtpVMuBnw 序言 2017 ...

  4. Libre OJ 「BalticOI 2013」非回文数 数位dp

    传送门 文章目录 题意: 思路: 题意: 问[l,r][l,r][l,r]内有多少个数是非回文数,即数字中不存在连续几个数为回文数. l,r≤1e18l,r\le1e18l,r≤1e18 思路: 这么 ...

  5. 「SDOI2014」数数 解题报告

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

  6. 「Luogu5395」【模板】第二类斯特林数·行

    「Luogu5395」[模板]第二类斯特林数·行 problem Solution 一句话题意:求\(_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}\) 根据第二类斯 ...

  7. 从首个「数实融合」公益球场,看元宇宙奏响创新「三重奏」

    作者 | 曾响铃 文 | 响铃说 2022年的元宇宙,一半是海水,一半是火焰. 一边是刮起元宇宙热潮的Roblox股价跌去大半,Meta也因元宇宙亏损深陷泥潭.另一边,经过2021年元宇宙概念落地和普 ...

  8. P4844 LJJ爱数数

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

  9. 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 ...

最新文章

  1. starUML -- 各种图绘制
  2. observer pattern
  3. 两个多精度十进制数加法程序设计_初中数学之有理数的加减,学会加法,减法即会,掌握技巧轻松计算...
  4. java 可能尚未初始化变量,java - 局部变量“变量”可能尚未初始化-Java - 堆栈内存溢出...
  5. rabbitmq消息队列,消息发送失败,消息持久化,消费者处理失败相关
  6. 写文件 追加到开始_文件和流
  7. 【操作系统/OS笔记05】非连续内存分配:分段、分页、页表
  8. 如何快速清理Mac系统上的大额文件
  9. Security+ 学习笔记38 TCP/IP网络
  10. android bluez 编译,[android源码分析]bluez起动过程中的各种plugin的初始化(一)-bluetooth_builtin数组所耍的花样...
  11. ubuntu安装laravel,Docker is not running.
  12. 集团公司申请企业邮箱有哪些注意事项?
  13. oracle如何禁用job,Oracle中如何停用JOB及如何使用JOB
  14. 论文笔记 SiamMask : Fast Online Object Tracking and Segmentation: A Unifying Approach
  15. Electron应用-云桌面客户端
  16. 【XBL 无法开机问题】【工位机调试】sdm660 XBL阶段,绕过电池在位检测,强制启动
  17. 阿里云PHP SDK(升级版)使用说明:
  18. 电子签名生成的图片为空白,以及生成透明底签名图片转为白色底
  19. 卷积神经网络 (CNN) 基本原理和公式
  20. localhost:8080打不开本地网页

热门文章

  1. Java - 反射机制
  2. 敏捷史话(四):敏捷是人的天性 —— Arie van Bennekum
  3. js给json对象添加、删除、修改属性
  4. Linux Debian 分区出错Partition 2 does not start on physical sector boundary 解决方法 + swap
  5. //假设有一个能装入总体积为T的背包和n件体积分别为w1,w2....wn.的物品,能否从n件物品中挑选若干件恰好装满背包,即使w1+w2+....+wn=T,要求找出所有满足上述条件的解。例如:当T
  6. vue3-element-admin 后台管理系统模板
  7. docker 使用数据库mysql
  8. Java之-springboot
  9. python二分法求最值_数值分析之二分法、试值法 python
  10. html读秒倒计时,jQuery实现读秒倒计时