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示例
2output示例
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 #include3 #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 ...