bzoj2721 [Violet5]樱花
给出 \(n\) 求 \(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\) 的正整数解数量 \(\bmod (10^9+7)\)
\(n\leq10^6\)
数论
先化式子
\]
令 \(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]樱花的更多相关文章
- 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 ...
- 【BZOJ2721】樱花(数论)
[BZOJ2721]樱花(数论) 题面 BZOJ 题解 先化简一下式子,得到:\(\displaystyle n!(x+y)=xy\),不难从这个式子中得到\(x,y\gt n!\). 然后通过\(x ...
- 【BZOJ-2721】樱花 线性筛 + 数学
2721: [Violet 5]樱花 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 499 Solved: 293[Submit][Status][D ...
- Bzoj2721 [Violet]樱花(筛法)
题面 题解 首先化一下式子 $$ \frac 1x+\frac 1y=\frac 1{n!} \Rightarrow \frac {x+y}{xy}=\frac 1{n!} \Rightarrow ( ...
- 【BZOJ2721】[Violet 5]樱花 线性筛素数
[BZOJ2721][Violet 5]樱花 Description Input Output Sample Input 2 Sample Output 3 HINT 题解:,所以就是求(n!)2的约 ...
- 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 ...
- 【bzoj2721】[Violet 5]樱花
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2721 好久没做数学题了,感觉有些思想僵化,走火入魔了. 这道题就是求方程$ \frac ...
- 「BZOJ2721」「LuoguP1445」 [Violet]樱花(数论
题目背景 我很愤怒 题目描述 求方程 $\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$ 的正整数解的组数,其中$N≤10^6$. 解的组数,应模$1e9+7$. 输入输出格 ...
- 【筛法求素数】【质因数分解】bzoj2721 [Violet 5]樱花
http://www.cnblogs.com/rausen/p/4138233.html #include<cstdio> #include<iostream> using n ...
随机推荐
- 洛谷P2286 [HNOI2004]宠物收养场
题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领 ...
- Django之django模型层二多表操作
一 创建模型 表和表之间的关系 一对一.多对一.多对多 ,用book表和publish表自己来想想关系,想想里面的操作,加外键约束和不加外键约束的区别,一对一的外键约束是在一对多的约束上加上唯一约束. ...
- Mysql sql 功能分类
分类 DDL:数据定义语言,用于定义数据库对象,比如创建表,列,库等 DML:数据操作语言,用于添加.删除.修改数据 DQL:数据查询语言,用于查询(结果集是虚拟表,放在内存中) DCL:数据控制语言 ...
- JAVA 利用MyEclipse结合TestNG测试框架进行单元测试
利用MyEclipse结合TestNG测试框架进行单元测试 by:授客 QQ:1033553122 测试环境 jdk1.8.0_121 myeclipse-10.0-offline-install ...
- 用C++对C++语法格式进行分析
前言 最近C++项目需要用到脚本,这就关系到如何绑定对象到脚本运行环境.因使用到多套脚本语言,所以现有的绑定技术,都不能满足需求.所以只能寻求解析C++的头文件,再根据描述进行绑定.起初发现boost ...
- React router动态加载组件-适配器模式的应用
前言 本文讲述怎么实现动态加载组件,并借此阐述适配器模式. 一.普通路由例子 import Center from 'page/center'; import Data from 'page/data ...
- 【Linux高频命令专题(24)】grep
简述 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则 ...
- bootstrap-paginator分页示例 源码 MVC
准备 1.数据:bootstrap包(含分页插件bootstrap-paginator.js) 2.技术方案:ajax动态加载分页.部分视图.BLL取数 代码 模板页 @{ Layout = null ...
- java抓取网页或者文件的邮箱号码
抓文件的 package reg; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.i ...
- [20190324]奇怪的GV$FILESPACE_USAGE视图.txt
[20190324]奇怪的GV$FILESPACE_USAGE视图.txt--//发现GV$FILESPACE_USAGE定义很奇怪,做一个记录.1.环境:SCOTT@book> @ ver1P ...