题目链接

洛谷

狗粮版

前置技能

  1. 初中基础的因式分解
  2. 线性筛
  3. \(O(nlog)\)的分解质因数
  4. 唯一分解定理

题解

首先来分解一下式子

\[\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}
\]

通分可化为:

\[\frac{x+y}{xy}=\frac{1}{n!}
\]

两边同时乘\(xy*(n!)\)

\[(x+y)n!=xy
\]

移项得:

\[xy-(x+y)n!=0
\]

两边同时加上\((n!)^2\)

\[xy-(x+y)n!+(n!)^2=(n!)^2
\]

通过十字相乘可因式分解为:

\[(x-n!)(y-n!)=(n!)^2
\]

\[∵\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}
\]

\[∴x,y>n!
\]

又因为\(x,y\)为正整数,所以\((x-n!),(y-n!)\)也为正整数,所以我们不妨令

\[X=(x-n!),Y=(y-n!)
\]

则原式可以化为:

\[XY=(n!)^2
\]

根据唯一分解定理可知

\[n!=P_1^{a_1}P_2^{a_2}P_3^{a_3}...P_n^{a_n}(p_i为质数)
\]

\((n!)^2\)的因数个数为:

\[(2*a_1+1)*(2*a_2+1)*(2*a_3+1)*...*(2*a_n+1)
\]

所以我们只要算出\(a_1,a_2,a_3...a_n\)就好了

至于怎么算,线性筛一遍,在分解质因数,求\(a_i\)就好了

code

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1000000;
const int mod = 1e9+7;
int prime[N+1],a[N+1],js,v[N+1],c[N+1];
int read(){
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9') f=(c=='-')?-1:1,c=getchar();
while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
return x*f;
}
void pd(){
for(int i=2;i<=N;i++){
if(!prime[i]) a[++js]=i,v[i]=i;
for(int j=1;j<=js;j++){
if(i*a[j]>N) break;
prime[i*a[j]]=1;
v[i*a[j]]=a[j];
}
}
}
main(){
int n=read(),x,ans=1;
pd();
v[1]=1;
for(int i=1;i<=n;i++)
for(int j=i;j!=1;j/=v[j])
c[v[j]]++;
for(int i=1;i<=N;i++)
ans*=(c[i]*2+1),ans%=mod;
printf("%lld",ans%mod);
}

[Violet]樱花的更多相关文章

  1. Luogu1445 [Violet]樱花 ---- 数论优化

    Luogu1445 [Violet]樱花 一句话题意:(本来就是一句话的) 求方程 $\frac{1}{X} + \frac{1}{Y} = \frac{1}{N!}$ 的正整数解的组数,其中$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 ...

  3. 洛谷P1445 [Violet] 樱花 (数学)

    洛谷P1445 [Violet] 樱花 题目背景 我很愤怒 题目描述 求方程 1/X+1/Y=1/(N!) 的正整数解的组数,其中N≤10^6. 解的组数,应模1e9+7. 输入输出格式 输入格式: ...

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

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

  5. Luogu P1445[Violet]樱花/P4167 [Violet]樱花

    Luogu P1445[Violet]樱花/P4167 [Violet]樱花 真·双倍经验 化简原式: $$\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}$$ $$\frac ...

  6. luoguP1445 [Violet]樱花

    链接P1445 [Violet]樱花 求方程 \(\frac {1}{X}+\frac {1}{Y}=\frac {1}{N!}\) 的正整数解的组数,其中\(N≤10^6\),模\(10^9+7\) ...

  7. BZOJ2721或洛谷1445 [Violet]樱花

    BZOJ原题链接 洛谷原题链接 其实推导很简单,只不过我太菜了想不到...又双叒叕去看题解 简单写下推导过程. 原方程:\[\dfrac{1}{x} + \dfrac{1}{y} = \dfrac{1 ...

  8. Luogu1445 [Violet]樱花

    题面 题解 $$ \frac 1x + \frac 1y = \frac 1{n!} \\ \frac{x+y}{xy}=\frac 1{n!} \\ xy=n!(x+y) \\ xy-n!(x+y) ...

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

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

随机推荐

  1. sql 2012先分离迁移mdf mlf 文件到别的机器后附加 数据库成只读的修复方法

    SQL Server2008附加数据库之后显示为只读时解决方法   从本地分离的数据库文件放到远程服务器上,附加数据库出现数据库为(只读情况) 阅读了以下两篇文章: 第一篇:http://blog.c ...

  2. HTML5 使用sessionStorage实现页面返回刷新

    需求:在某个列表页面跳转到增加新项目页面后需要返回到前一个页面 并且数据最新数据.刚开始是做法是 history.back();方法 返回后页面不会自动刷新的.在新的页面重新访问之前页面的链接可以访问 ...

  3. leetcode378

    public class Solution { public int KthSmallest(int[,] matrix, int k) { ); ); var list = new List< ...

  4. com线程模型01

    Coinitialize: IUnknown: apartment; 套间线程:自由线程: “假定我们需要在后台增大对某个组件的一个计数器,并偶尔需要对显示进行刷新.用一个套间线程而不是工作线程来完成 ...

  5. 在ubuntu中安装minicom时出现devic…

    未正常关闭minicom yesaidu@ywf-ubuntu: ~$ ls /var/lock LCK..ttyS0  subsys yesaidu@ywf-ubuntu: ~$ kill 0 ye ...

  6. 【原】Coursera—Andrew Ng机器学习—Week 3 习题—Logistic Regression 逻辑回归

    课上习题 [1]线性回归 Answer: D A 特征缩放不起作用,B for all 不对,C zero error不对 [2]概率 Answer:A [3]预测图形 Answer:A 5 - x1 ...

  7. CSS鼠标手势大全

    实例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  8. Adam:一种随机优化方法

    我们介绍Adam,这是一种基于一阶梯度来优化随机目标函数的算法. 简介: Adam 这个名字来源于 adaptive moment estimation,自适应矩估计.概率论中矩的含义是:如果一个随机 ...

  9. ubuntu 12.04下搭建web服务器(MySQL+PHP+Apache) 教程

    最近,经理让我搭建一个服务器,我从网上找了一篇比较好的教程,按教程一步步执行感觉挺顺利,所以准备整理一下这个教程.尊重原版注明出处:http://news.2ky.cn/Linux/ubuntu-12 ...

  10. SqlServer——神奇代码1之Update

    说明:一个带有update的循环的代码.很简单,但是在QQ群里问了,应该说是很少有人注意这个问题,也就是很少有人真的理解SQL中的Update. 代码如下: if object_id('tempdb. ...