給[l,r]區間的每乙個數都質因數分解的複雜度可以達到(r-l)logr,真的漲姿勢……
另外,質因數分解有很重要的一點,就是只需要打sqrt(r)以內的素數表就夠了……因為超過sqrt(r)的至多只有乙個,分解其他的那些剩下的就是了。
果然學習的過程中要精益求精,把時間和空間都盡量降到最低。
此外還有乙個很重要的公式。d(i)表示i的因子個數。那麼
#includeusingnamespace
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...