bzoj2721 [Violet 5]樱花

给出 \(n\) 求 \(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\) 的正整数解数量 \(\bmod (10^9+7)\)

\(n\leq10^6\)

数论


先化式子

\[\begin{aligned}&\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\\&\frac{xy}{x+y}=n!\\&xy=n!(x+y)\\&xy-n!x-n!y+n!^2=n!^2\\&(x-n!)(y-n!)=n!^2\end{aligned}
\]

令 \(a=x-n!,\ b=y-n!\)

原题即为求 \(ab=n!^2\) 的整数解数量,即为 \(n!^2\) 的因数个数

令 \(n!=\displaystyle\prod_{p_i\in p}p_i^{c_i}\)

答案即为: $$\displaystyle\prod_{p_i\in p}{(2\times c_i+1)}$$

\(p.s.\ :\) 如果原题为本质不同的方案数,即 \(\verb|Luogu5253 丢番图|\) ,答案即为 \(\frac{ans+1}{2}\) 。因为对于每个 \(\{(a,\ b) | a\neq b\}\) 都被多算了一遍。

至于求出 \(c_i\) ,可以先筛出 \(1\cdots n\) 的每个质数 \(p\) ,然后考虑阶乘 \(n!\) 一共包含多少个 \(p\)

\(n!\) 中 \(p\) 的个数等于 \(1\cdots n\) 中每个数包含 \(p\) 的个数之和。

在 \(1\cdots n\) 中, 至少包含一个 \(p\) 的数显然有 \(\lfloor\frac{n}{p}\rfloor\) 个。而至少包含两个 \(p\) 的数有 \(\lfloor\frac{n}{p^2}\rfloor\) 个。不过其中的一个质因子已经在 \(\lfloor\frac{n}{p}\rfloor\) 中统计过了,所以只需要再统计第二个质因子,即累加上 \(\lfloor\frac{n}{p^2}\rfloor\) ,而不是 \(2\times\lfloor\frac{n}{p^2}\rfloor\) 。 \(\lfloor\frac{n}{p^3}\rfloor,\ \lfloor\frac{n}{p^4}\rfloor,\ \cdots\) 同理

综上所述, \(n!\) 中质因子 \(p\) 的个数为: $$\displaystyle\sum_{p^k\leq n}{\lfloor\frac{n}{p^k}\rfloor}$$

时间复杂度 \(O(n\log n)\)

代码

#include <bits/stdc++.h>
using namespace std; const int maxn = 1e6 + 10, P = 1e9 + 7;
int n, tot, p[maxn]; void sieve() {
int tmp = sqrt(n) + 1;
for (int i = 2; i <= tmp; i++) {
for (int j = i * i; j <= n; j += i) {
p[j] = 1;
}
}
for (int i = 2; i <= n; i++) {
if (!p[i]) p[++tot] = i;
}
} int main() {
scanf("%d", &n);
sieve();
int ans = 1;
for (int i = 1; i <= tot; i++) {
int x = 1, s = 0;
while (1ll * p[i] * x <= n) {
x *= p[i], s += n / x;
}
ans = 1ll * ans * (s << 1 | 1) % P;
}
printf("%d", ans);
return 0;
}

bzoj2721 [Violet5]樱花的更多相关文章

  1. BZOJ2721 Violet5樱花(数论)

    有(x+y)n!=xy.套路地提出x和y的gcd,设为d,令ad=x,bd=y.则有(a+b)n!=abd.此时d已是和a.b无关的量.由a与b互质,得a+b与ab互质,于是将a+b除过来得n!=ab ...

  2. 【BZOJ2721】樱花(数论)

    [BZOJ2721]樱花(数论) 题面 BZOJ 题解 先化简一下式子,得到:\(\displaystyle n!(x+y)=xy\),不难从这个式子中得到\(x,y\gt n!\). 然后通过\(x ...

  3. 【BZOJ-2721】樱花 线性筛 + 数学

    2721: [Violet 5]樱花 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 499  Solved: 293[Submit][Status][D ...

  4. Bzoj2721 [Violet]樱花(筛法)

    题面 题解 首先化一下式子 $$ \frac 1x+\frac 1y=\frac 1{n!} \Rightarrow \frac {x+y}{xy}=\frac 1{n!} \Rightarrow ( ...

  5. 【BZOJ2721】[Violet 5]樱花 线性筛素数

    [BZOJ2721][Violet 5]樱花 Description Input Output Sample Input 2 Sample Output 3 HINT 题解:,所以就是求(n!)2的约 ...

  6. bzoj2721 / P1445 [Violet]樱花

    P1445 [Violet]樱花 显然$x,y>n$ 那么我们可以设$a=n!,y=a+t(t>0)$ 再对原式通分一下$a(a+t)+ax=x(a+t)$ $a^{2}+at+ax=ax ...

  7. 【bzoj2721】[Violet 5]樱花

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2721 好久没做数学题了,感觉有些思想僵化,走火入魔了. 这道题就是求方程$ \frac ...

  8. 「BZOJ2721」「LuoguP1445」 [Violet]樱花(数论

    题目背景 我很愤怒 题目描述 求方程 $\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$ 的正整数解的组数,其中$N≤10^6$. 解的组数,应模$1e9+7$. 输入输出格 ...

  9. 【筛法求素数】【质因数分解】bzoj2721 [Violet 5]樱花

    http://www.cnblogs.com/rausen/p/4138233.html #include<cstdio> #include<iostream> using n ...

随机推荐

  1. JS命名空间模式解析

    简介 在SF上看到这样一个提问: 如题,因为不得已的原因,需要写若干个全局函数.但又不想这样: window.a = function(){} window.b = function(){} wind ...

  2. 行业观察报告:从SAAS困局看行业趋势 ZT

    企业管理软件的演化过程 第一阶段:独立开发 典型代表:IBM 这个阶段是将企业的信息化需求整合成硬件+软件的一体化解决方案,从零开始设计开发,适用于通讯.电力.交通等基础设施建设项目.这个阶段的特点是 ...

  3. C# SharpMap的简单使用

    本文是利用ShapMap实现GIS的简单应用的小例子,以供学习分享使用.关于SharpMap的说明,网上大多是以ShapeFile为例进行简单的说明,就连官网上的例子也不多.本文是自己参考了源代码进行 ...

  4. Android为TV端助力 MediaPlayer API大全已经方法详解(转载)

    通过这张图,我们可以知道一个MediaPlayer对象有以下的状态: 1)当一个MediaPlayer对象被刚刚用new操作符创建或是调用了reset()方法后,它就处于Idle状态.当调用了rele ...

  5. PHP mkdir新建目录

    一.在本目录下新建目录 <?php$dir_url = 'aaa/';if(!is_dir($dir_url)) {   mkdir($dir_url, 0777);}?> 二.在级联创建 ...

  6. Android代码书写规范

    1.资源文件命名规则2.类名文件命名规则3.尽量少用枚举4.public方法.重要逻辑.主要类结构体必须注释,其他部分可自定注释5.提交代码必须描述清楚修改内容,如果一次提交内容过多,拆分功能进行多次 ...

  7. EasyUI动画效果

    1.jQuery动画效果 a)基本效果 >show(speed),显示 >hide(speed),隐藏 >toggle(speed),切换 b)滑动的效果 >slideUp(s ...

  8. JAVA设计模式——代理(静态代理)

    定义 为其它的对象提供一种代理,以控制这个对象的访问 使用场景 当不想直接访问某个对象的时候,就可以通过代理 1.不想买午餐,同事帮忙带 2.买车不用去厂里,去4s店 3.去代理点买火车票,不用去车站 ...

  9. 利用dockerfile制作基于centos7的lnmp镜像(亲测,详细版)

    首先呢,这篇文章,也是小弟参考了许多文章,自己整理出来的,有很多不足之处还有待加强,期待各位评论. > LNMP 是代表 Linux 系统下的 Nginx.Mariadb.PHP 相结合而构建成 ...

  10. Windows Server 2016-Active Directory复制概念(一)

    停更十余天后,从今天开始继续为大家带来Windows Server 2016 Active Directory系列更新,本章为大家介绍有关Active Directory复制相关概念内容,有关Acti ...