推式子\[\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...