POJ 1845 逆元 分治

2021-10-25 10:42:33 字數 2752 閱讀 1588

題意

傳送門 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^)\dots (1+p_n+\dots +p_n^)

(1+p1​

+⋯+p

1e1​

​)(1

+p2​

+⋯+p

2e2​

​)…(

1+pn

​+⋯+

pnen

​​)逆元

對於質因數 p

ip_i

pi​,根據等比數列求和公式,括號內求和為 pie

ib+1

−1pi

−1

\frac-1}

pi​−1p

iei​

b+1​

−1​ 分子項快速冪求解,分母項逆元求解。對於 pim

odm=

1p_i\ mod\ m =1

pi​mod

m=1 的情況需要特殊處理,因為此時 pi−

1p_i-1

pi​−

1 不存在逆元。對於正整數 n

nn,至多有乙個大於等於 n

\sqrt n

n​的質因子,那麼逆元打表處理 [1,

n]

[1,\sqrt n]

[1,n​]

的部分,對於超出這個範圍的部分,利用費馬小定理進行快速冪求逆元。

#include

#include

#include

#include

#include

using

namespace std;

#define mod 9901

typedef map<

int,

int> mp;

int a, b, inv[mod]

;mp prime_factor

(int n)}if

(n !=1)

res[n]=1

;return res;

}int

mod_pow

(int x,

int n)

return res;

}int

get_inv

(int n)

intmain()

printf

("%d\n"

, res)

;return0;

}

分治

考慮質因數 p

ip_i

pi​,若 e

ie_i

ei​ 為奇數,設其括號內求和為 sum

(p,e

)sum(p,e)

sum(p,

e),則有sum

(p,e

)=(1

+p+⋯

+p⌊e

/2⌋)

+(p⌊

e/2⌋

+1+⋯

+pe)

=(1+

p⌊e/

2⌋+1

)×su

m(p,

⌊e/2

⌋)

sum(p,e)=(1+p+\dots+p^)+(p^+\dots +p^e)=(1+p^)\times sum(p,\lfloor e/2\rfloor)

sum(p,

e)=(

1+p+

⋯+p⌊

e/2⌋

)+(p

⌊e/2

⌋+1+

⋯+pe

)=(1

+p⌊e

/2⌋+

1)×s

um(p

,⌊e/

2⌋) 指數為偶數,將 pie

ip_i^

piei​​

加入答案後將 e

ie_i

ei​ 減一處理為奇數情況即可。

#include

#include

#include

#include

#include

using

namespace std;

#define mod 9901

typedef map<

int,

int> mp;

int a, b;

mp prime_factor

(int n)}if

(n !=1)

res[n]=1

;return res;

}int

mod_pow

(int x,

int n)

return res;

}int

sum(

int p,

int e)

intmain()

printf

("%d\n"

, res)

;return0;

}

poj1845 逆元 因子和

傳送門 主要目的還是記錄一下,學習了學長部落格寫的比我清楚很多 題意 求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...

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 到了這裡...