洛谷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\) 却忘了她把天使玩偶埋在了哪 ...
随机推荐
- Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向
原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...
- 【python 3.6】使用itertools.product进行排列组合
#python 3.6 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'BH8ANK' import itertools colo ...
- 音频分析框架pyAudioAnalysis文档
“ pyAudioAnalysis是一个非常好用且强大的音频分析开源工具,能实现音频的特征提取.分类和回归模型的训练和执行,以及其他一些实用的功能.此外,本文档并非直译,也有部分比较简略,可以结合源码 ...
- vs2017 asp.net FriendlyUrls 新特性
这个包如何使用呢?其实很简单,只需将nuget包添加到项目中,再调用routes.EnableFriendlyUrls(),你就可以通过/Foo来访问/Foo.aspx了!你也能够利用URL片段将更多 ...
- 遗传算法中几种不同选择算子及Python实现
前言 本文对遗传算法中的几种选择策略进行了总结, 其中包括: Proportionate Roulette Wheel Selection Linear Ranking Selection Expon ...
- 2.airflow参数简介
比较重要的参数: 参数 默认值 说明 airflow_home /home/airflow/airflow01 airflow home,由环境变量$AIRFLOW_HOME决定 dags_folde ...
- win2008 r2 开启TLS1.2
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityPr ...
- PSP DAILY软件功能说明书
PSP DAILY软件功能说明书 一.开发背景 你在完成了一周的软件工程作业后,需要提交一个PSP图表,里面有4项,如下所示: 1.本周PSP表格,包含每项任务的开始.中断.结束.最终时间,格式如下: ...
- 《JavaScript》JavaScript的名字和版本
语言标准版本名字:ECMAScript(ECMA是欧洲计算机制造协会,据说可能是专门做标准的,除了JavaScript遵循这个标准以外,还有XX....) Jscript(IE对该语言实现版本的 ...
- 网站UI分析
本次网站UI分析我选择的是我们石家庄铁道大学的网站,首先对于网站的分析建立在我经常使用鼠须的基础上,我可以很好的站在用户的角度来进行分析,否则对于你不熟悉的网站你可能是不能很好地体验到他的 结构. U ...