首页 > 其他分享 >一些有趣的数论题 - Updating

一些有趣的数论题 - Updating

时间:2024-10-19 09:32:01浏览次数:1  
标签:frac log 质数 个数 leq 论题 正整数 有趣 Updating

P2568 GCD

给定正整数 \(n\),求正整数数对 \((x,y)\) 的个数,该数对满足 \(x\leq n,y\leq n\) 且 \(\gcd(x,y)\) 是质数。

首先我们可以枚举质数 \(p\),求出 \(\gcd(x,y)=p\) 的数对个数然后对每一个质数求和即可。所以考虑如何求这个子问题。

给定质数 \(p\),求满足 \(x\leq n,y\leq n\) 且 \(\gcd(x,y)=p\) 的数对 \((x,y)\) 个数。

根据 \(\gcd\) 的性质有 \(\gcd(x,y)=p\Rightarrow \gcd(\frac{x}{p},\frac{y}{p})=1\),满足 \(\frac{x}{p},\frac{y}{p}\leq\frac{n}{p}\),即求出小于 \(\frac{n}{p}\) 的互质数对个数。

我们设 \(g(x)\) 表示小于等于 \(x\) 的互质数对个数,用 \(\mathbb{P}\) 表示质数集,则原题目答案为:

\[\text{Answer}=\sum_{p\in P \wedge p\leq n} g\left(\left\lfloor\frac{n}{p}\right\rfloor\right). \]

所以考虑怎么求 \(g(x)\)。

注意到是 互质 数对,可以考虑欧拉函数。我们有:

\[g(n)=-1+2\times\sum_{i=1}^{n}\varphi(i). \]

解释:\(\varphi(i)\) 表示小于等于 \(i\) 的与它互质的数的个数,则求和后就是 \(g(n)\),但注意数对 \((x,y)\neq(y,x)\),所以要乘以 \(2\),但是减去 \(1\) 是由于 \((1,1)=(1,1)\)。

所以线性求欧拉函数之后前缀和求 \(g\) 函数然后遍历一遍质数求和即可。时间复杂度为 \(O(n+\pi(n))\)。

P1445 [Violet]樱花

给定 \(n\),求以下方程正整数解个数。

\[\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}. \]

注意到由于 \(x,y\) 为正,则 \(\frac{1}{x}\) 与 \(\frac{1}{y}\) 都小于 \(\frac{1}{n!}\),所以 \(x\) 和 \(y\) 都大于 \(n!\)。

设 \(y=n!+k\),其中 \(k\in \mathbb{Z^+}\)。于是有:

\[\begin{aligned} \frac{1}{x}+\frac{1}{n!+k}&=\frac{1}{n!}.\\ (n!+k)\cdot n! + x\cdot n!&=x\cdot(n!+k).\\ (n!)^2+k\cdot n! &= x\cdot k.\\ x&=\frac{(n!)^2}{k}+n!. \end{aligned} \]

由于 \(x\in \mathbb{Z^+}\),而 \(n!\in\mathbb{Z^+}\),于是 \(\frac{(n!)^2}{k}\in\mathbb{Z^+}\),即 \(k\) 是 \((n!)^2\) 的因数。

所以枚举 \(1\) 至 \(n\),暴力计算分解后的质数个数然后加一相乘即可。

P3927 SAC E#1 - 一道中档题 Factorial

给定正整数 \(n,K\),满足 \(1\leq n\leq 10^{12},2\leq K\leq 10^{12}\),求 \(n!\) 在 \(K\) 进制下末尾 \(0\) 的个数。

显然:

若存在正整数 \(x\) 满足 \(K^x\ |\ n\) 则 \(n\) 在 \(K\) 进制下的末尾至少有 \(x\) 个零。

所以题目可转化为求最大的 \(x\) 使 \(K^x\) 整除 \(n!\)。考虑一个朴素解法,暴力分解 \(n!\) 以及 \(K\),然后考虑 \(n!\) 的因子包含几个 \(K\) 的因子,然后即可注意到,如果这个因子不是 \(K\) 的因数,则不用考虑。

所以朴素方法如下:

分解 \(K\) 得到 \(K=p_1^{k_1}\cdot p_2^{k_2}\cdots p_m^{k_m}\),其中 \(p_i\) 都是质数,我们拿每个质数去除 \(P=n!\),记 \(q_i\) 表示 \(P\) 能被 \(p_i\) 整除的次数,则答案为:

\[\text{Answer}=\min_{i=1}^m \left\lfloor\frac{q_i}{k_i}\right\rfloor. \]

自然语言描述就是对于每个 \(p_i^{k_i}\) 求出 \(P\) 最多能被他们的几次方整除,最后取 \(\min\)。

时间复杂度分析:质因数分解 \(K\) 时间复杂度为 \(O(\sqrt{K})\),易证得 \(m\leq \log_2 K\),整除的总次数 \(\sum q_i \leq \log_2 n!\),则总时间复杂度为 \(O(\sqrt{K}+\log_2 K+\log_2 n!)\)。

会发现时间复杂度的瓶颈在于求出每个因子在 \(n!\) 中有几次,即 \(O(\log_2 n!)\) 这部分。考虑怎么加速处理出 \(q_i\)。

对每个 \(p_i\) 单独考虑,分开看 \(n!=1\times 2\times 3\times\cdots\times n\),其中包含大于等于 \(1\) 次的 \(p_i\) 因子的数的个数为 \(\left\lfloor\frac{n}{p_i}\right\rfloor\),所以 \(q_i\leftarrow\left\lfloor\frac{n}{p_i}\right\rfloor\)。而其中包含大于等于 \(2\) 次 \(p_i\) 因子的数的个数则为 \(\left\lfloor\frac{n}{p_i^2}\right\rfloor\),所以 \(q_i\leftarrow q_i + \left\lfloor\frac{n}{p_i^2}\right\rfloor\),这里只加一次是因为第一次被前一种情况包含了。同理可处理包含大于等于 \(j\) 次 \(p_i\) 因子的数的个数。

所以计算 \(q_i\) 我们有以下的代码:

for (int i = 1; i <= m; i ++) {
  LL tmp = n; q[i] = 0;
  while (tmp > 0) {
    q[i] += tmp / p[i];
  	tmp /= p[i];
  }
}

然后即可重复朴素算法的操作求出答案。

时间复杂度分析:由于 \(n,K\) 同阶,以下都用 \(n\) 表示。与朴素算法相比仅相差计算 \(q_i\) 的操作。对于每个因子而言,记 \(a_i\) 表示 \(n\) 至多能被她除几次才为 \(0\),则显然 \(a_i\leq \log_{p_i} n\leq \log_2 n\),而因子一共小于 \(\log_2 n\) 个,则处理 \(q\) 数组的时间复杂度仅为 \(O(\log_2^2n)\),所以总时间复杂度为 \(O(\sqrt{n}+\log_2 n+\log_2^2n)\),即 \(O(\sqrt{n}+\log^2_2 n)\)。

P10496 The Luckiest Number

给定一个正整数 \(k\),求最小的正整数 \(x\) 满足 \(k\) 能整除 \(x\) 个 \(8\) 组合起来的正整数。

易发现 \(x\) 个 \(8\) 连起来的数为 \(8\times111\cdots111=8\times\frac{10^x-1}{9}\)。所以题目就是要求出一个最小的正整数 \(x\) 满足 \(k \ | \ 8\times \frac{10^x-1}{9}。\)

两边同时乘以 \(9\) 得到 \(9k \ | \ 8\times (10^x-1)\)。记 \(d\) 表示 \(\gcd(k,8)\) 则有:

\[\frac{9k}{d} \ | \ 10^x-1. \]

所以有:

\[\begin{aligned} 10^x-1&\equiv 0\quad(\bmod\ \frac{9k}{d}),\\ 10^x&\equiv1\quad (\bmod\ \frac{9k}{d}). \end{aligned} \]

引理:当 \(a,n\) 互质时 \(a^x\equiv1\ (\bmod\ n)\) 的最小正整数解 \(x_0\) 整除 \(\varphi(n)\)。

证明:使用反证法。若 \(x_0\) 不能整除 \(\varphi(n)\),则存在正整数 \(p,q\) 满足 \(\varphi(n)=px_0+q,1\leq q< x_0\)。由题设有 \(a^{x_0}\equiv 1\ (\bmod\ n)\),所以 \(a^{px_0}\equiv 1\ (\bmod\ n)\),而由欧拉定理可得 \(a^{\varphi(a)}\equiv 1\ (\bmod\ n)\),两式相除得到 \(a^{\varphi(a)-px_0}\equiv 1\ (\bmod\ n)\),即 \(a^q\equiv 1\ (\bmod\ n)\),而 \(q<x_0\),与题设 \(x_0\) 的最小性不符。所以原命题为真命题。证毕。

所以本题所求 \(x\) 一定是 \(\varphi(\frac{9k}{d})\) 的因数,枚举即可。

标签:frac,log,质数,个数,leq,论题,正整数,有趣,Updating
From: https://www.cnblogs.com/LaDeX-Blog/p/18475497/Intersting-Problem-of-Number-Theory

相关文章

  • 记一次有趣的发现-绕过堡垒机访问限制
    前言    在某一次对设备运维管理的时候,发现的某安全大厂堡垒机设备存在绕过访问限制的问题,可以直接以低权限用户访问多个受控系统,此次发现是纯粹好奇心驱使下做的一个小测试压根没用任何工具。因为涉及到了很多设备和个人信息,所以尽量少放演示图片,且都进行了厚码。第......
  • 一招致胜|CG动画,让宣传新颖有趣!
    CG动画宣传片是结合了计算机图形技术和宣传片制作的一种视频形式,它利用CG技术创建高质量的二维或三维动画、静止画面或特效,以展示某个概念、产品或企业的核心理念和特色。CG动画在很多行业都有涉及,除了我们常见的影视动画和游戏动画,还可以做建筑动画、栏目包装动画、展览展示......
  • 我的项目解决方案是一个有趣的很直白的展现
    技术大咖和创业者,大家好!我是施懿民,是知平软件公司的创始人,在这里我分享一个我身经历的一个事情,希望大家可以共勉。最近,我在找客户时候,为了做一个官网宣传页面,在花了数天时间构建网站的设计和产品并过于专注于完善每一个小细节之后,我意识到我一直在犯同样的错误:我像逃避瘟疫一样......
  • 题解 QOJ1869【Power Station of Art】/ SS241006B【结论题】
    题解QOJ1869【PowerStationofArt】/SS241006B【结论题】PetrozavodskSummer2021.Day6.XJTUContest,GPofXJTUXXIIOpenCupnamedafterE.V.Pankratiev,GrandPrixofXi'an题目描述给出一个无向图,每个点有点权\(a\)和颜色\(c\),其中颜色只会有红蓝两种。......
  • SS241006B. 结论题
    SS241006B.结论题题意给你一个无向图,每个点有点权\(1\lea_i\le10^6\)和颜色\(c_i=0/1\)。可以进行若干次操作:选择任意一条边,交换两个点的点权,如果两个点的颜色相同,两个点的颜色分别取反。给出初始状态和一个终态,判断是否存在到达终态的方案。思路真结论题。这个操作......
  • 有趣的最高效率工程问题
    题干:        甲乙两个服装厂生产同一种服装,甲厂每月产成衣900套,生产上衣和裤子所用的时间比是2:1,乙厂每月产成衣1200套,生产上衣和裤子的时间比是3:2。若两厂分工合作,按最佳生产方案计,两厂每月一共可生产成衣多少套?求解:    ①甲厂生产时间比为2:1,乙厂为1.5:1......
  • 聊一聊 C#中有趣的 SourceGenerator生成器
    一:背景1.讲故事前些天在看AOT的时候关注了下源生成器,挺有意思的一个东西,今天写一篇文章简单的分享下。二:源生成器探究之旅1.源生成器是什么简单来说,源生成器是Roslyn编译器给程序员开的一道口子,在这个口子里可以塞入一些自定义的cs代码,让Roslyn编译器在编译代码的时候顺......
  • 学霸带你游戏化笔记整理就像玩游戏一样有趣
    掌握笔记的技巧在信息丰富的现代社会,无论是管理工作任务还是提升游戏表现,有效的笔记技巧都能大大提高我们的效率。笔记不仅仅是简单的记录工具,它能够帮助我们更好地组织、分析和应用信息。本文将通过具体的游戏案例,详细探讨如何选择合适的笔记工具、优化笔记的结构和格式、提......
  • SOLID 原则使用一些有趣的类比与车辆示例
    solid是计算机编程中五个良好原则(规则)的缩写。solid允许程序员编写更易于理解和稍后更改的代码。solid通常与使用面向对象设计的系统一起使用。让我们使用车辆示例来解释solid原理。想象一下,我们正在设计一个系统来管理不同类型的车辆,例如汽车和电动汽车,以提供运输服务。......
  • 利用ESP32可以实现哪些有趣的功能?
    一、智能家居控制灯光控制作为一款功能强大的微控制器,可以通过Wi-Fi连接到家庭网络,实现对智能家居设备的控制。在灯光控制方面,可以使用ESP32连接到智能灯泡或灯光控制器,通过手机应用或语音指令来控制灯光的开关、亮度和颜色。此外,还可以设置定时开关、情景模式等功能,实现更加智......