洛谷 因子和

2021-10-10 22:34:11 字數 1943 閱讀 4336

題目傳送

題意:

思路:肯定是唯一分解,然後就是自己推公式了

公式:那麼這個怎麼快速的求得呢?

我們看到,這是個等比數列求和的乘積

等比數列求和的公式是:

n為第n項,我們可以利用逆元來快速求解

但是現在還有乙個問題每當逆元不存在的時候,怎麼辦?

也就是說當p-1是 模數的倍數的時候,怎麼求呢?首先有公式:

但是沒有什麼用,我們可以觀察到,當p-1是mod的倍數的時候,那麼p%mod也就是1

那麼直接帶入計算的式子中有以下推論:

最後乙個坑點,因為要取模,後面又要-1,可能為負數。。。。。

題很不錯

ac**

#include

inline

long

long

read()

while

(c >=

'0'&& c <=

'9')

return x*s;

}using

namespace std;

#define newnode (treenode *)malloc(sizeof(treenode))

#define mem(a,b) memset(a,b,sizeof(a))

#define lowbit(x) (x)&(-x)

const

int n =

2e5+10;

const

long

long infinf =

0x7f7f7f7f7f7f7f

;const

int inf =

0x3f3f3f3f

;const

double eps =

1e-5

;const

int mod =

1e9+7;

const

double ii =

acos(-

1);const

double pp =

(ii*

1.0)/(

180.00);

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair<

int,

int> pii;

typedef pair piil;

ll arr[

100005][

2],m;ll qucik_pow

(ll a,ll b,ll p)

return ans;

}ll solve

(ll a,ll b,ll p)

else

}signed

main()

for(

int i =

2;i * i <= a;i++

) arr[m][1

]*= b;

m++;}

}if(a >1)

for(

int i =

0;i < m;i++

) cout << sum << endl;

}

洛谷 1593 因子和 組合數學

題目傳送門 好像這題並不是組合數學啊 只是乙個套公式的題目罷了。乙個正整數 n 有素因子分解 p a11 pa22 p amm,則有以下兩個定理 1.n 的因子和 pa1 11 1p1 1 pa 2 12 1p2 1 pam 1m 1pm 1 i 1mp ai 1 i 1p i 1 2.n的因 子個...

因子和因子個數

所有因子個數 n 與所有因子的和 n 都是乘 積 性函式。定義1 因子和函式 定義為整數n的所有正因子之和,記為 n 定義2 因子個數函式 定義為正整數n的所有正因子個數,記為 n 定理1 設p是乙個素數,a是乙個正整數,那麼 n 1 p p 2 p a p a 1 1 p 1 n a 1 定理2 ...

洛谷2068 統計和

給定乙個長度為n n 100000 初始值都為0的序列,x x 10000 次的修改某些位置上的數字,每次加上乙個數,然後提出y y 10000 個問題,求每段區間的和。時間限制1秒。輸入格式 第一行1個數,表示序列的長度n 第二行1個數,表示操作的次數w 後面依次是w行,分別表示加入和詢問操作 其...