洛谷P1445 [Violet] 樱花 (数学)
洛谷P1445 [Violet] 樱花
题目背景
我很愤怒
题目描述
求方程 1/X+1/Y=1/(N!) 的正整数解的组数,其中N≤10^6。
解的组数,应模1e9+7。
输入输出格式
输入格式:
输入一个整数N
输出格式:
输出答案
输入输出样例
输入样例#1:
1439
输出样例#1:
102426508
Solution
极其恶心的一道题...
看到这种题肯定是需要化简式子的,因为出题人不会好到给你一个好做的式子
\]
\]
\]
一个骚操作,两边同时加上\((n!)^2\),为什么,因为方便因式分解...
\]
然后因式分解
\]
令\(a=(n!-x),b=(n!-y)\),因为\((n!)^2\)是确定的,所以确定了\(a\),就可以确定\(b\),也就可以确定\(x,y\)了
那么a的方案数是多少?因为\(a\)是\((n!)^2\)的因子,所以\(a\)的取值的方案数就是\((n!)^2\)的因子的方案数
然后根据唯一分解定理
\]
\]
由于每个质因子\(p_i\)都有\(2\times c_i+1\)种取值,所以
\]
那么最后问题就转化成了对\(n!\)进行分解质因数,并求质因数的个数
暴力对\(1-n\)每个数分解质因数,再合并复杂度过高,为\(O(n\sqrt n)\)
由于\(n!\)的每个质因子都不超过n,所以我们可以预处理\(1-n\)内所有质数p,再考虑\(n!\)内一共有多少个质因子p
我们可以对于在线性筛质数的过程中同时处理一下n以内每个数的最小质因子\(p\),然后统计这个数的贡献,在\(1-n\)中至少包含一个质因子\(p\)的有\(\lfloor\frac{n}{p}\rfloor\),至少包含两个质因子p的有\(\lfloor\frac{n}{p^2}\rfloor\)...
那么\(n!\)中质因子\(p\)的个数就是
\]
对于每个质因子,我们只需要\(log\ n\)的时间来求解,所以总复杂度是\(O(n\ log\ n)\)的
Code
#include<bits/stdc++.h>
#define rg register
#define il inline
#define Min(a,b) ((a)<(b)?(a):(b))
#define Max(a,b) ((a)>(b)?(a):(b))
#define lol long long
#define in(i) (i=read())
using namespace std;
const lol N=1e6+10,mod=1e9+7;
lol read() {
lol ans=0,f=1; char i=getchar();
while(i<'0' || i>'9') {if(i=='-') f=-1; i=getchar();}
while(i>='0' && i<='9') ans=(ans<<1)+(ans<<3)+i-'0',i=getchar();
return ans*=f;
}
lol n,cnt,ans=1;
lol g[N],prime[N],c[N];
void init() {
memset(g,0,sizeof(g));
for(int i=2;i<=n;i++) {
if(!g[i]) g[i]=i,prime[++cnt]=i;
for(int j=1;j<=cnt && i*prime[j]<=n;j++) {
g[i*prime[j]]=prime[j];
if(i%prime[j]==0) break;
}
}
}
int main()
{
in(n); init();
for(int i=1;i<=n;i++)
for(int j=i;j!=1;j/=g[j]) c[g[j]]++;
for(int i=1;i<=n;i++) ans=ans*(c[i]*2+1)%mod;
cout<<ans<<endl;
}
洛谷P1445 [Violet] 樱花 (数学)的更多相关文章
- 【题解】洛谷P1445 [Violet]樱花 (推导+约数和)
洛谷P1445:https://www.luogu.org/problemnew/show/P1445 推导过程 1/x+1/y=1/n! 设y=n!+k(k∈N∗) 1/x+1/(n!+k)=1 ...
- 洛谷 P1445 [Violet]樱花
#include<cstdio> #include<algorithm> #include<cstring> #include<vector> usin ...
- BZOJ2721或洛谷1445 [Violet]樱花
BZOJ原题链接 洛谷原题链接 其实推导很简单,只不过我太菜了想不到...又双叒叕去看题解 简单写下推导过程. 原方程:\[\dfrac{1}{x} + \dfrac{1}{y} = \dfrac{1 ...
- 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 ...
- Luogu P1445[Violet]樱花/P4167 [Violet]樱花
Luogu P1445[Violet]樱花/P4167 [Violet]樱花 真·双倍经验 化简原式: $$\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}$$ $$\frac ...
- 洛谷P2398 GCD SUM (数学)
洛谷P2398 GCD SUM 题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式 输入 ...
- 【洛谷 P1445】 [Violet]樱花(唯一分解定理)
做了题还是忍不住要写一发题解,感觉楼下的不易懂啊. 本题解使用latex纯手写精心打造. 题意:求\(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\)的正整数解总数. 首先 ...
- 洛谷P1445 樱花
题意:求 1/x + 1/y = 1/(n!)的正整数解个数. 解:神仙...... 设(n!) = t 打表发现 x ∈ [t+1 , 2t] 反正就是拿到式子以后乱搞一通然后发现得到了这个很美观的 ...
- 洛谷 P4169 [Violet]天使玩偶/SJY摆棋子 解题报告
P4169 [Violet]天使玩偶/SJY摆棋子 题目描述 \(Ayu\)在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后 的今天,\(Ayu\) 却忘了她把天使玩偶埋在了哪 ...
随机推荐
- 7个Node.js的Web框架
NodeJS也就是Node,是众所周知的使用javascript构建Web应用框架,它启动一个服务器非常简单,如下: var http = require('http'); http.createSe ...
- Memcached&PHP-Memcache安装配置
参考文档: memcache官网:https://memcached.org/ 参考:http://www.runoob.com/memcached/memcached-install.html 参考 ...
- 2017年4月8日Office 365 使用CSV文件导入邮件组
国内版 第一步: Import-Module msonline Connect-MsolService 输入用户名密码 第二步: Get-MsolUser" 第三步: Set-Executi ...
- C语言零碎知识点
1. int整形在64位和32位计算机中都占4个字节. 指针在64位占8个字节,32位占4个字节. 2. 数组下标从0开始,a[0]开始,链表下标从1开始,a[1]开始. 3. 条件运算符(con ...
- selenium--判断元素是否存在
# coding:utf-8from selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitf ...
- CSS布局之圣杯布局和双飞翼布局
其实圣杯布局和双飞翼布局实现的都是三栏布局,两边的盒子宽度固定,中间盒子自适应,也就是我们常说的固比固布局.它们实现的效果都是一样的,差别在于其实现的思想. 一.圣杯布局 html代码中,将重要的内容 ...
- C++:const_cast的简单理解
前言:const_cast是我比较头疼的一个知识点,最近查阅了很多资料,也翻看了很多他人的博客,故在此将自己目前学习到的有关const_cast知识做一个简单的总结 一.什么是const_cast 简 ...
- Transparent Flow Migration for NFV
Transparent Flow Migration for NFV 摘要 因为SDN提供的灵活性,NF之间存在着流量的迁入和迁出问题.而且NF也要根据相关的状态信息处理数据包,所以流量迁移必须满足以 ...
- 线段树---no end
额,还有 :区间操作,交,并,补等 区间合并 扫描线 这些问题有空再研究吧.... 先看j2ee了..... 传送门 版权声明:本文为博主原创文章,未经博主允许不得转载.
- Java GUI 点击按钮退出
import java.awt.*; import java.awt.event.*; public class TestFrameTwo implements ActionListener { Fr ...