1189 階乘分數

2022-08-02 22:27:15 字數 1388 閱讀 5428

1189 階乘分數

基準時間限制:1 秒 空間限制:131072 kb

1/n! = 1/x + 1/y(0,給出n,求滿足條件的整數解的數量。例如:n = 2,1/2 = 1/3 + 1/6,1/2 = 1/4 + 1/4。由於數量可能很大,輸出mod 10^9 + 7。

input

輸入乙個數n(1 <= n <= 1000000)。
output

輸出解的數量mod 10^9 + 7。
input示例

2
output示例

2

思路:通分可得xy-(x+y)n!=0;然後(x-n!)*(y-n!)=xy-(x+y)n!+n!^2;

即可得到(x-n!)(y-n!) = n!^2;那麼左邊的就是右邊的因數,那麼求下右邊這個數的因數有幾個就可以了,分解質因數即可,然後乘法原理;

1 #include 2 #include

3 #include4 #include5 #include6 #include7

using

namespace

std;

8bool prime[1000006

];9 typedef long

long

ll;10

int ans[1000006

];11 ll cnt[100006

];12

const ll mod = 1e9+7;13

ll quick(ll n,ll m,ll mod);

14int main(void)15

23int cn = 0;24

for(i = 2; i <= 1000000; i++)

25if(!prime[i])ans[cn++] =i;

26ll n;

27 ll ni = quick(2,mod-2

,mod);

28 scanf("

%lld

",&n);

29for(i = 0; i < cn; i++)

3037

}38 ll sum = 1;39

for(i = 0; i <= cn; i++)

4043 sum+=1

;44 sum = sum*ni%mod;

45 printf("

%lld\n

",sum);

46return0;

47}48ll quick(ll n,ll m,ll mod)

4959

return

ask;

60 }

nod1189 階乘能拆的和

題目鏈結 1 n 1 x 1 y,給出n,求滿足條件的整數解的個數mod 10 9 7 化成x n 2 k n 問題轉化為求 n 2的約數個數和。由於結果要求模10 9 7。所以得出的結果是 ans 1 2 mod,進一步地變成 ans 1 q mod.其中q是2模mod的乘法逆元。類似於之前那個求...

階乘的素因子分解 51nod 1189

對 n 進行素因子分解 n 1 2 3 4 n,因此它一定含有小於等於n 的所有素數我們要對這些素數分別進行處理求出含有多少項。例如我們求n 含有多少個素因子p 設f n p 表示n 含有多少素因子p 1 2 3 4 n p 2p 3p 4p n p p k 其中k不含有素因子p 注 n p p i...

JZOJ5791 階乘 二分 數論,數學

題目 給出nn 個數a 1 a 2 a n a 1 a 2 a n 求a 1 a 2 a n a 1 a 2 a n 是m m 因數的最小的mm。首先,我們可以把這n n個數分解質因數,並將每個質因數存在乙個桶裡。那麼我們設分解後有k 1 k 1 個x 2 x 2 k 2 k 2 個x 2 k m ...