洛谷P1445 Violet 櫻花

2022-09-19 10:39:13 字數 1334 閱讀 7713

推式子\[\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\) 就能確定 \(b\) 也就能確定 \(x\) 和 \(y\)

\(a\) 是 \((n!)^2\) 的因子 那 \(a\) 的方案數 就是 \((n!)^2\) 因子的方案數

然後唯一分解定理:

\[n!=p_1^+p_2^+p_3^+...+p_m^

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

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

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

\]最後線性篩出質數 然後把指數 \(c_i\) 累計完求\(ans\)

#include#include#include#includeusing namespace std;

typedef long long ll;

const int n=1e6+5,mod=1e9+7;

ll n,cnt,ans=1,num[n],prime[n],c[n];

int main()

for(int j=1;j<=cnt&&i*prime[j]<=n;j++)

}for(int i=1;i<=n;i++)

for(int j=i;j!=1;j/=num[j])

c[num[j]]++;

for(int i=1;i<=n;i++)

ans=ans*(c[i]<<1|1)%mod;

printf("%lld",ans);

return 0;

}

洛谷P1445 Violet 櫻花 數學

我很憤怒 求方程 1 x 1 y 1 n 的正整數解的組數,其中n 10 6。解的組數,應模1e9 7。輸入格式 輸入乙個整數n 輸出格式 輸出答案 輸入樣例 1 輸出樣例 1 極其噁心的一道題.看到這種題肯定是需要化簡式子的,因為出題人不會好到給你乙個好做的式子 frac frac frac fr...

題解 洛谷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...