hdu 6069 素數篩 區間質因數分解

2022-08-12 12:03:15 字數 831 閱讀 4518

給[l,r]區間的每乙個數都質因數分解的複雜度可以達到(r-l)logr,真的漲姿勢……

另外,質因數分解有很重要的一點,就是只需要打sqrt(r)以內的素數表就夠了……因為超過sqrt(r)的至多只有乙個,分解其他的那些剩下的就是了。

果然學習的過程中要精益求精,把時間和空間都盡量降到最低。

此外還有乙個很重要的公式。d(i)表示i的因子個數。那麼

#includeusing

namespace

std;

typedef

long

long

ll;const

int maxn=1000000

;int prime[maxn+1

];void

getprime()

}}const

int md=998244353

;long

long sj[maxn+2

];long

long fj[maxn+2

];long

long

k;void getfact(long

long l,long

long

r)

for (int i=1;i<=prime[0];i++)

fj[j-l]=fj[j-l]*(k*cnt%md+1)%md;}}

for (long

long i=l;i<=r;i++)

}}int

main()

printf(

"%i64d\n

",ans);

}return0;

}

hdu6069 區間素數篩

hdu6069 counting divisors 傳送門題意 計算 sum d i k mod 998244353 其中 d n 表示 n 的約數個數,其中 1 leq l leq r leq 1e12,r l leq 1e6,1 leq k leq 1e7 題解 根據唯一分解定理 n p 1 p...

HDU 6069 素數篩法

思路 設 n p 1 p 2 p m n p 1 c 1 p 2 c 2 p m c m 則d n k kc 1 1 kc 2 1 kc m 1 d n c 1 1 c2 1 c m 1 則 d n k kc 1 1 kc 2 1 kc m 1 d n k kc 1 1 kc 2 1 k c m 1...

hdu6069 簡單數學 區間素數篩法

題意 給出 l,r,k 求 lambda d i k mod998244353,其中 l i r,d i 為 i 的因子個數 思路 若 x 分解成質因子乘積的形式為 x p1 a1 p2 a2 pn an,那麼 d x a1 1 a2 1 an 1 顯然 d x k a1 k 1 a2 k 1 an...