news 2026/8/29 17:24:56

洛谷原创 P1445 樱花

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
洛谷原创 P1445 樱花

P1445 [Violet] 樱花

题目

求关于x , y x,yx,y的方程1 x + 1 y = 1 n ! \dfrac{1}{x} + \dfrac{1}{y} = \dfrac{1}{n!}x1+y1=n!1有多少个正整数解。

  • 1 ≤ n ≤ 10 6 1 \le n \le 10^61n106

思路

由于式子1 x + 1 y = 1 n ! \dfrac{1}{x} + \dfrac{1}{y} = \dfrac{1}{n!}x1+y1=n!1是分式,不好处理,我们先把它转为整式。

由于x , y , n ! > 0 x,y,n!>0x,y,n!>0则:

y × n ! + x × n ! = x × y y \times n! + x\times n!=x \times yy×n!+x×n!=x×y
y × n ! = x × y − x × n ! y \times n!=x \times y - x \times n!y×n!=x×yx×n!
y × n ! = x × ( y − n ! ) y \times n!=x \times (y - n!)y×n!=x×(yn!)
因为y × n ! > 0 y \times n! > 0y×n!>0
所以x × ( y − n ! ) > 0 x \times (y - n!) > 0x×(yn!)>0,即y > n ! y > n!y>n!
同理,x > n ! x > n!x>n!

那我们不妨令x = n ! + g x = n! + gx=n!+gy = n ! + f y = n! + fy=n!+fg , f > 0 g,f > 0g,f>0

x = n ! + g x = n! + gx=n!+gy = n ! + f y = n! + fy=n!+f代入:

n ! × ( x + y ) = x × y n! \times (x + y) = x \times yn!×(x+y)=x×y
n ! × ( n ! + g + n ! + f ) = ( n ! + g ) × ( n ! + f ) n! \times (n! + g + n! +f) = (n! + g) \times (n! + f)n!×(n!+g+n!+f)=(n!+g)×(n!+f)
2 × n ! 2 + g × n ! + f × n ! 2 \times n!^2 + g \times n! + f \times n!2×n!2+g×n!+f×n!
= g × n ! + f × n ! + g × f = g \times n! + f \times n! + g \times f=g×n!+f×n!+g×f
n ! 2 = g × f n!^2 = g \times fn!2=g×f

由于只要知道g , f g,fg,f,我们就能求出对应的x , y x,yx,y,而只要求出g gg,我们就能求出f ff,所以我们只用求有多少个g gg就行。

显然,g ggn ! 2 n!^2n!2的因数,那g gg的个数就是n ! 2 n!^2n!2的因数个数,设n ! = p 1 a 1 × p 2 a 2 × ⋯ × p m a m n! = p_1^{a_1} \times p_2^{a_2} \times \dots \times p_m^{a_m}n!=p1a1×p2a2××pmam,其中p i p_ipi都是质数,a i a_iai都大于0 00,那么n ! 2 n!^2n!2就等于p 1 2 × a 1 × p 2 2 × a 2 × ⋯ × p m 2 × a m p_1^{2 \times a_1} \times p_2^{2 \times a_2} \times \dots \times p_m^{2 \times a_m}p12×a1×p22×a2××pm2×am,那g gg肯定是由一些p pp相乘得到的,我们枚举每个p i p_ipig gg中可能出现的次数,有选个不选两种情况,有可能出现的次数为0 00~2 × a i 2 \times a_i2×ai次,共2 × a i + 1 2 \times a_i + 12×ai+1种情况,根据乘法原理,g gg共有( 2 × a 1 + 1 ) × ( 2 × a 2 + 1 ) × ⋯ × ( 2 × a m + 1 ) (2 \times a_1 + 1) \times (2 \times a_2 + 1) \times \dots \times (2 \times a_m + 1)(2×a1+1)×(2×a2+1)××(2×am+1)个,我们现在的目标就变成了求出所有的a i a_iai

由于n ≤ 10 6 n \le 10^6n106,那n ! n!n!会非常大,朴素的质因数分解为O ( n ) O(\sqrt{n})O(n),肯定会超时,这时我们不妨换个角度,我们枚举所有的质数,然后暴力求其指数。

1 ≤ n ≤ 10 6 1 \le n \le 10^61n106,我们可以用线性筛来求出所有1 11n nn的质数。

对于每个质数,显然,在1 11n nn中有⌊ n p i ⌋ \lfloor\dfrac{n}{p_i}\rfloorpin个数至少包含一个p i p_ipi,但别忘了,一个数可能包含多个p i p_ipi,我们再看有多少个数至少包含两个p i p_ipi,显然有⌊ n p i 2 ⌋ \lfloor\dfrac{n}{p_i^2}\rfloorpi2n个,以此类推,有⌊ n p i k ⌋ \lfloor\dfrac{n}{p_i^k}\rfloorpikn个数至少包含k kkp i p_ipi。因为10 6 10^6106以内的质数很少,而质数函数的增长较快,我们可以暴力枚举k kk,直到p i k p_i^kpik1 11n nn中一个数没有,因为没有数包含k kkp i p_ipi,自然也没有数包含多于k kkp i p_ipi

时间复杂度约为O ( n ) O(n)O(n)

Code

#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintMAXN=1e6+7;constintmod=1e9+7;intn,ans=1;vector<int>val;bitset<MAXN>bit;voidinit(){bit.set(1);for(inti=2;i<=n;i++){if(!bit[i])val.push_back(i);for(autou:val){if(i*u>n)break;bit.set(i*u);if(i%u==0)break;}}return;}signedmain(){ios::sync_with_stdio(0);cin.tie(0);cin>>n;init();for(autou:val){intv=u,num=0;while(1){if(v>n)break;num+=(n/v);v*=u;}ans*=(2*num+1);ans%=mod;}cout<<ans<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 17:22:31

MySQL事务底层原理:redo log、undo log与MVCC的完整解析

1. 事务到底解决了什么问题&#xff1a;从"背概念"到"看本质"先问一句&#xff1a;你背了那么久的ACID&#xff0c;有没有想过一个问题——为什么MySQL的InnoDB引擎偏偏要用一套这么复杂的日志体系、锁体系、版本链体系&#xff0c;只为换一个"要么全…

作者头像 李华
网站建设 2026/8/29 17:17:13

移动App发版避坑指南:签名、版本号与自动化检查全攻略

做移动开发这几年&#xff0c;如果说哪个环节最让我焦虑&#xff0c;那一定是发版这件事。平时写代码、做需求、修Bug&#xff0c;反馈链路都很短&#xff0c;代码有问题跑一次就能发现。但发版不一样&#xff0c;它是一场跨开发、测试、产品、运营的联合行为&#xff0c;任何一…

作者头像 李华
网站建设 2026/8/29 17:14:35

QT按钮交互与信号槽机制实战:从基础控件到多线程通信

1. 项目概述&#xff1a;从按钮到交互的灵魂在桌面应用开发的世界里&#xff0c;QT框架以其强大的跨平台能力和优雅的C封装&#xff0c;一直是许多开发者的心头好。但一个应用如果只有静态的界面&#xff0c;那无异于一具没有灵魂的躯壳。真正让应用“活”起来的&#xff0c;是…

作者头像 李华
网站建设 2026/8/29 17:12:56

AI挑战黎曼猜想失败,为何反而刷新37年数学纪录?

看到“Claude挑战黎曼猜想失败&#xff0c;却意外刷新37年数学纪录”这条新闻时&#xff0c;我的第一反应不是感叹AI很强&#xff0c;也不是嘲笑它离证明黎曼猜想还差得远&#xff0c;而是想弄清楚一个问题&#xff1a;一次挑战大定理的失败&#xff0c;为什么能产出一个长期没…

作者头像 李华
网站建设 2026/8/29 17:12:21

基于STM32的PWM信号发生器设计:从定时器配置到LCD显示的完整实现

1. 项目概述&#xff1a;从需求到实现的完整路径在准备电子设计竞赛的过程中&#xff0c;一个稳定、直观且功能灵活的信号发生器往往是许多赛题的基础模块。我这次分享的&#xff0c;就是一个围绕STM32微控制器构建的可调PWM&#xff08;脉冲宽度调制&#xff09;输出系统&…

作者头像 李华
网站建设 2026/8/29 17:12:03

10个厂家800个告警码:我是如何从混乱的 API 字典里揪出直流侧拉弧的

去年 8 月&#xff0c;我们在苏北对接一个 30MW 的工商业屋顶项目&#xff0c;业主选了三个品牌的逆变器混装。上线第三天&#xff0c;后台跳了一个「设备异常」的通用告警。等运维小哥顶着 38 度的高温爬上屋顶&#xff0c;发现其中一台机器的直流接线端子已经有碳化迹象了。当…

作者头像 李华