Luogu1445 [Violet]樱花 ---- 数论优化】的更多相关文章

Luogu1445 [Violet]樱花 一句话题意:(本来就是一句话的) 求方程 $\frac{1}{X} + \frac{1}{Y} = \frac{1}{N!}$ 的正整数解的组数,其中$N \leq 10^6$ 题解: 差不多是第一篇公开的题解,因为以前的太烂了,不敢发...... 我们观察到提交记录发现似乎时间有从200ms+到8ms-的,然而标准题解中给出的代码就是跑的比较慢的...... 所以有没有什么快一点的呢? 假设此时你已经用朴素算法A过此题 于是我们分析算法: 楼下题解的复…
题面 题解 $$ \frac 1x + \frac 1y = \frac 1{n!} \\ \frac{x+y}{xy}=\frac 1{n!} \\ xy=n!(x+y) \\ xy-n!(x+y)=0 \\ (x-n!)(y-n!)=(n!)^2 \\ $$ 因为确定$(x-n!),(y-n!)$就能确定$x,y$,所以答案就是$d((n!)^2)$ 代码 #include<cstdio> #include<cstring> #include<cctype> #in…
题目大意 求方程$$\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$$的正整数解的组数. 思路 咱们把式子整理得$$xy-(x+y)N!=0$$.$xy$和$x+y$?貌似可以因式分解?!于是$$N!^2 - (x + y)N! + xy = N!^2$$,即$$(x-N!)(y-N!)=N!^2$$.令$A=x-N!,B=y-N!$,则原式变为$$A*B=(N!)^2$$.因此,解的个数便是$N!^2$的因子的个数.根据唯一分解定理,任意的正整数都可分解为$\prod…
题目背景 我很愤怒 题目描述 求方程 $\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$ 的正整数解的组数,其中$N≤10^6$. 解的组数,应模$1e9+7$. 输入输出格式 输入格式: 输入一个整数N 输出格式: 输出答案 输入输出样例 输入样例#1: 复制 1439 输出样例#1: 复制 102426508 题解 看到原题面的我也很愤怒. 显然是道数论题,所以我们要去分析它的性质. $\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}$ $\…
P1445 [Violet]樱花 显然$x,y>n$ 那么我们可以设$a=n!,y=a+t(t>0)$ 再对原式通分一下$a(a+t)+ax=x(a+t)$ $a^{2}+at+ax=ax+tx$ $x=a^{2}/t+a$ $x=(n!)^{2}/t+n!$ 再根据唯一分解定理 $(n!)^{2}=q_{1}^{p_{1}}*q_{2}^{p_{2}}*q_{3}^{p_{3}}*......*q_{m}^{p_{m}}$ 将$(n!)^{2}$分解质因数一下 最后乘法原理套上去 end.…
洛谷P1445 [Violet] 樱花 题目背景 我很愤怒 题目描述 求方程 1/X+1/Y=1/(N!) 的正整数解的组数,其中N≤10^6. 解的组数,应模1e9+7. 输入输出格式 输入格式: 输入一个整数N 输出格式: 输出答案 输入输出样例 输入样例#1: 1439 输出样例#1: 102426508 Solution 极其恶心的一道题... 看到这种题肯定是需要化简式子的,因为出题人不会好到给你一个好做的式子 \[\frac{1}{x}+\frac{1}{y}=\frac{1}{n!…
Luogu P1445[Violet]樱花/P4167 [Violet]樱花 真·双倍经验 化简原式: $$\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}$$ $$\frac{xy}{x+y}=n!$$ $$xy=n!(x+y)$$ $$-n!(x+y)+xy=0$$ $$(n!x+n!y)-xy=0$$ $$(n!)^2+(n!x+n!y)-xy=(n!)^2$$ $$(x-n!)(y-n!)=(n!)^2$$ 所以$(x-n!)$就是$(n!)^2$的一个因子. 又…
链接P1445 [Violet]樱花 求方程 \(\frac {1}{X}+\frac {1}{Y}=\frac {1}{N!}\) 的正整数解的组数,其中\(N≤10^6\),模\(10^9+7\). 化简单一下\[x*y-n!*(x+y)=0\] 因式分解一下\[(x-n!)*(y-n!)=(n!)^2\] 设\(a=x-n!,b=y-n!\),那么\(a*b=(n!)^2\) 也就是\(a,b\)对应了唯一一组\(x,y\),所以问题转化成了:求方程 \(a*b=(n!)^2\) 的正整数…
[Violet 5]樱花 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 671  Solved: 395[Submit][Status][Discuss] Description Input Output Sample Input   Sample Output   HINT 题解: 上面废话许多. 设n!=z,y=z+d 1/x+1/y=1/z 1/x+1/(z+d)=1/z (x+z+d)/(x*z+dx)=1/z z(x+z+d)=x*z+d…
题目描述 输入 输出 样例输入 2 样例输出 3 题解 数论 设1/x+1/y=1/m,那么xm+ym=xy,所以xy-xm-ym+m^2=m^2,所以(x-m)(y-m)=m^2. 所以解的数量就是m^2的约数个数. 所以只需要算出n!中每个素数的出现次数即可. 我们可以先快筛出1~n的素数,然后考虑每个素数出现的次数. 而p出现的次数为包含p^1的数的个数+包含p^2的数的个数+...+包含p^k的数的个数,我们可以迭代来求. 最后把它们乘2加1再乘到一起即可. #include <cstd…