洛谷P1445 Violet 櫻花 數學

2022-04-30 07:24:13 字數 1879 閱讀 2035

我很憤怒

求方程 1/x+1/y=1/(n!) 的正整數解的組數,其中n≤10^6。

解的組數,應模1e9+7。

輸入格式:

輸入乙個整數n

輸出格式:

輸出答案

輸入樣例#1:

輸出樣例#1:

極其噁心的一道題...

看到這種題肯定是需要化簡式子的,因為出題人不會好到給你乙個好做的式子

\[\frac+\frac=\frac

\]\[\frac=\frac

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

\]乙個騷操作,兩邊同時加上\((n!)^2\),為什麼,因為方便因式分解...

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

\]然後因式分解

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

\]令\(a=(n!-x),b=(n!-y)\),因為\((n!)^2\)是確定的,所以確定了\(a\),就可以確定\(b\),也就可以確定\(x,y\)了

那麼a的方案數是多少?因為\(a\)是\((n!)^2\)的因子,所以\(a\)的取值的方案數就是\((n!)^2\)的因子的方案數

然後根據唯一分解定理

\[n!=p_1^\times p_2^\times ...\times p_m^

\]\[(n!)^2=p_1^\times p_2^\times ...\times p_m^

\]由於每個質因子\(p_i\)都有\(2\times c_i+1\)種取值,所以

\[ans=(2\times c_1+1)\times (2\times c_2 +1)\times ...\times(2\times c_m+1)

\]那麼最後問題就轉化成了對\(n!\)進行分解質因數,並求質因數的個數

暴力對\(1-n\)每個數分解質因數,再合併複雜度過高,為\(o(n\sqrt n)\)

由於\(n!\)的每個質因子都不超過n,所以我們可以預處理\(1-n\)內所有質數p,再考慮\(n!\)內一共有多少個質因子p

\[\lfloor\frac\rfloor+\lfloor\frac\rfloor+...+\lfloor\frac}}\rfloor

\]對於每個質因子,我們只需要\(log\ n\)的時間來求解,所以總複雜度是\(o(n\ log\ n)\)的

#include#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()

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()

}}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<

洛谷P1445 Violet 櫻花

推式子 frac frac frac 先通分 frac frac 交叉相乘 xy n x y 移項 n x y xy 0 兩邊加上 n 2 n 2 n x y xy n 2 因為方便十字相乘法因式分解 n x n y n 2 令 a n x b n y 因為 n 2 已確定 那只要確定 a 就能確定...

題解 洛谷P1445 Violet 櫻花

題面 我們首先對題目中的式子進行化簡 begin frac frac frac y times n x times n xy x n times y x times n y frac frac frac frac frac n frac end 因為 x 和 y 都是正整數,所以 frac 也一定是...

洛谷 P4167 Violet 櫻花

題面 又懶得弄題面,開個傳送門吧 分析人生第一次切數學題,我們先把方程寫出來 frac frac frac 現在我們知道的條件是x,y都是正整數 廢話 所以我們考慮單獨通過式子的變換將x,y表示出來,表示出來的式子算出來也一定是個整數 frac frac frac frac frac frac fr...