1 #include 2 #include 3 #include 4 #include 5view code6using
namespace
std;78
long
long arr1[100000];9
long
long mod=9901;10
11long
long multi(long
long a,long
long
b)12
2324
long
long fsum(long
long p,long
long n) //
遞迴二分求 (1 + p + p^2 + p^3 +...+ p^n)%mod
25 33
34int
main()
3553
if(flag)
5461}62
if(sum!=1)63
68 cout
70return0;
71 }
求乙個數的所有約數和
ans=(1+q1^1+q1^2+......+q1^k1)*(1+q2^1+q2^2+......+q2^k2)*......(1+qn^1+qn^2+......qn^kn)
此題不能用等比數列前n項和,因為要求逆元需要該數與mod互質,而此題中mod過小,該數可能為mod的整數倍,所以要用二分的方法直接求
(1+p+p^2+p^3)=(1+p)*(1+p^2)
複雜度更低的求乙個數的所有約數
最簡單的想法是對所有小於這個數的數逐個遍歷取餘是否為0。但是這種方法的複雜度是o n 的,如下 n int input list1 for i in range 1 n 1 if n i 0 print list1 做題的時候往往這樣複雜度過高,我們將遍歷變成 1,n 0.5 求前一半的約數,求出來...
poj 1845 求A B的約數之和
題意 求a b的所有約數之和 mod 9901。思路 大數模運算。兩個最基本公式 a b c a c b c c 和 a b c a c b c c 用 int64的原因為 n cnt i b cnt i 為a第i個素因子的個數 可能會超int。1 對a進行素因子分解得 a p1 a1 p2 a2 ...
求解乙個數的所有約數之積
首先我們將這個數化成唯一分解的形式,也就是這樣x p1 a1 p2 a2 pn an,我們定義答案為f x 首先我們定義d x 為x的約數的個數,那麼f x x d x 2 由費馬小定理m為素數a m 1 1 mod m a x a x m 1 mod m 其中m為素數,這樣我們就可以在計算中給冪函...