poj1845 逆元 因子和

2021-08-04 20:01:33 字數 1111 閱讀 5451

傳送門

主要目的還是記錄一下,學習了學長部落格寫的比我清楚很多……

題意:求a^b的因子和對9901取餘 

思路:乙個數的因子和求法:對n素數分解,n=p1^a1*p2^a2*...*pk^ak

因子和=(1+p1+p1^2+...+p1^a1)*(1+p2+p2^2+...+p2^a2)*...(1+pk+...pk^ak)

=(p1^(a1+1)-1)/(p1-1)+...+(pk^(ak+1)-1)/(pk-1)

(這個公式還是搞了很久才明白咋回事,這個式子拆開會發現正好是n的各個因子,正是由於式子的每一項都是n的素因子相乘得到的)

那麼這個題求a^b的因子和,我們沒有必要求出a^b具體值,只需要進行素因子分解的時候把b冪次加入就可以了,那麼式子就化作了

a^b因子和=(p1^(a1*b+1)-1)/(p1-1)+...+(pk^(ak*b+1)-1)/(pk-1)

這裡在求的時候運用了公式a/b mod m=a mod (m*b)/b,這個公式比較適用於a是冪的形式,m*b比較小,因為這樣可以利用快速冪來求解,此公式無論m是不是素數都適用。

#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int mod=9901;

const int maxn=1e6+5;

bool prime[maxn];

int p[maxn];

int cnt;

void isprime()

return ans;

}ll quick_mod(ll a,ll b,ll m)

b>>=1;

a=multi(a,a,m);

}return ans;

}ll solve(ll a,ll b)

return ans%mod;

}int main()

return 0;

}

POJ 1845 逆元 分治

題意 傳送門 poj 1845 題解分解質因數 a p 1e1p 2e2 pnen a p 1 p 2 dots p n a p1e1 p2 e2 pne n 則約數和為 1 p1 p1e 1 1 p2 p2 e2 1 p n pnen 1 p 1 dots p 1 1 p 2 dots p 2 d...

POJ 1845乘法逆元 約數和

乘法逆元計算等比數列的求和公式 給兩個正整數a和b,計算ab的所有因子和的值對9901取模 約數和公式 s 1 p1 p1 2 p1 k1 1 p2 p2 2 p2 k2 1 pn pn 2 pn 3 pn kn 等比數列公式 pb c 1 1 p1 1 當模數mod為質數時,bmod 2逆元即為b...

poj1845 約數之和

本題應該說是乙個數學問題了。首先暴力肯定是不行的。首先我們把a分解質因數,表示為p1 c1 p2 c2 pn cn.那麼a b就可以表示為 p1 c1 b p2 c2 b pn cn b 那麼很明顯了,所有約數的集合就是p1 k1,p2 k2 pn kn.其中0 ki b ci 1 i n 到了這裡...