a的b次冪的約數和

2022-06-08 23:12:26 字數 2390 閱讀 1184

**自:

這個不能直接求逆元來做,

求現在來看乙個逆元最常見問題,求如下表示式的值

當然這個經典的問題有很多方法,最常見的就是擴充套件歐幾里得,如果

是素數,還可以用費馬小定理。

但是你會發現費馬小定理和擴充套件歐幾里得演算法求逆元是有侷限性的,它們都會要求a

與m互素。實際上我們還有一

種通用的求逆元方法,適合所有情況。公式如下

部落格

在這裡有兩種方法求1.可以用二分的方法求等比數列的前n項和

若n為奇數,一共有偶數項

1+p+p^2+.....+p^n=(1+p^(n/2+1))+p*(1+p^(n/2+1))+p^2*(1+p^(n/2+1))+.....+p^(n/2)*(1+p^(n/2+1))=(1+p+p^2+....+p^(n/2))*(1+p^(n/2+1))

若n為偶數,一共有奇數項

1+p+p^2+.....+p^n=(1+p^(n/2+1))+p*(1+p^(n/2+1))+p^2(1+p^(n/2+1))+.....+p^(n/2-1)*(1+p^(n/2+1))+p^(n/2)=(1+p+p^2+.....+p^(n/2-1))*(1+p^(n/2+1)+p^(n/2);

long

long sum(long

long p,long

long

n)

ac**:

#include#include

using

namespace

std;

typedef

long

long

ll;const

int maxn=1e6+100

;const ll mod=9901

;ll a,b;

ll qpow(ll a,ll b)

a=(a*a)%mod;

b/=2

; }

return ans%mod;

}ll sum(ll p,ll k)

if(k&1)

else

}ll cal()

ans=(ans*sum(i,z*b))%mod;

}if(a!=1

)

return ans%mod;

}int

main()

return0;

}

方法二:

因為可能會很大,超過int範圍,所以在快速冪時要二分乘法。

D a的b次 快速求冪

time limit 1000 ms memory limit 32768 kb os windows source acm程式設計期末考試 2006 06 07 給你兩個數a和b,計算a的b次方,輸出a的b次方的最後三位數所表示的整數。input 輸入資料報含多個測試例項,每個例項佔一行,由兩個正...

二分求冪,快速求解a的b次冪

如何求得a的b次冪呢,那還不簡單,乙個for迴圈就可以實現!void main void cout 那麼如何快速的求得a的b次冪呢?上面的 還可以優化嗎?當然是ok的!下面就介紹一種方法 二分求冪。所謂二分求冪,即是將b次冪用二進位制表示,當二進位制位k位為1時,需要累乘a的2 k次方。下面優化一下...

CF Edu 15 B 求和二的冪次

you are given n integers a1,a2,an.find the number of pairs of indexes i,j i j that ai aj is a power of 2 i.e.some integer x exists so that ai aj 2x th...