hdu6069 素數篩法 2017多校4

2022-08-15 15:00:09 字數 1063 閱讀 5568

對於[l , r]內的每個數,根據唯一分解定理有

所以有

因為//可根據唯一分解定理推導

所以題目要求

就可以運用它到上述公式

(注意不能暴力對l,r內的數乙個個分解算貢獻,而應該列舉l,r區間內質數的倍數):

/*

hdu6069[素數篩法] 2017多校3

*/#include

using

namespace

std;

typedef

long

long

ll;ll l, r, k;

const ll mod =998244353ll;

int t, n, prime[1100000

], primesize;

bool isprime[11000000

];void getlist(int

listsize)

}}ll num[

1000005], ans[1000005

];void

solve()

//不能列舉l到r之間的元素進行暴力質因數分解, 會超時; 所以我們可以通過列舉質數的倍數來優化。

for (int i = 1; (ll)prime[i]*prime[i] <= r; i++)

ans[j - l] = (ans[j - l] * (1ll + cnt * k)) %mod;}}

ll res = 0

;

for (int i = 0; i < n; i++)

res = (res + ans[i]) %mod;

}printf(

"%lld\n

", res);

}int

main()

return0;

}

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 區間素數篩

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...

HDU6069 篩法 有新技巧

題目鏈結 解題思路 這道題是這是暑假集訓我debug時間最長的一道題,從昨天下午到今天中午。剛開始的時候直接列舉的l r之間的所有數的質因數,然後就tle了,後來我就看了一下題解,發現了一種優化方法,暴力的做法是把l r每個數的質因數都找一遍,這樣比如l r是1 8,4找過質因數2,6也找過質因數2...