計蒜客 A1956 線性篩

2021-10-10 07:02:00 字數 1086 閱讀 3702

題意

傳送門 計蒜客 a1956 [acm-icpc 2018 南京賽區網路預賽] sum

題解考慮 i=p

qe

i=pq^e

i=pq

e,當某個質因子個數超過 2

22 時顯然沒有分解方法,則

f[i] = f[p] & e=0\\ f[i] = f[p]*2 & e=1\\ f[i] = f[p] & e=2 \\ f[i] = 0 & e\geq 3\\ \end

⎩⎪⎪⎪⎨⎪

⎪⎪⎧​

f[i]

=f[p

]f[i

]=f[

p]∗2

f[i]

=f[p

]f[i

]=0​

e=0e

=1e=

2e≥3

​埃氏篩法考慮每個質因子 o(n

logl

ogn)

o(nloglogn)

o(nlog

logn

) 會 tle

tletl

e;考慮線性篩,原理是僅用最小的質因子篩去和數,複雜度 o(n

)o(n)

o(n)

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

#define maxn 20000005

int t, n, prime[maxn >>1]

, used[maxn]

, f[maxn]

;ll sum[maxn]

;void

sieve

(int n)

for(

int j =

0; j < p && i * prime[j]

< maxn;

++j)

else}}

}int

main()

return0;

}

計蒜客 2019計蒜之道D

題意 現在給定你乙個字串 s ss 以及乙個整數 k kk,請求出 s ss的字典序最小的長度為 k kk的子串行。資料範圍 0 s 5000000 00 s 5000 000 樣例輸入 helloworld 5樣例輸出 ellld思路 假如我們先不考慮長度為k的限制我們應當怎麼做?我們以樣例為例子...

計蒜客 解碼

蒜頭君自己發明了一種字串的編碼方式,對於只含有大小寫字母的字串,可以用數字來表示括號裡面的串連續出現的次數 數字有可能超過一位數 比如a abcd 2等價於aabcdabcd。特別地,如果數字前面沒有括號,表示緊貼數字的前面的 乙個字母 出現的次數。比如abc2表示abcc。為了降低解碼的難度,蒜頭...

計蒜客 郊遊

蒜頭君成為了計蒜客附屬幼兒園的一名老師,乙個陽光明媚的週末,蒜頭君帶領著小朋友們去野外郊遊。一共有 2n2n 個小朋友,正好是 n n 個男孩和 n n 個女孩。蒜頭君讓小朋友分組玩遊戲,每組乙個男孩和乙個女孩,但是有些女孩比較討厭某些男孩,不願意和他們分在一組,男孩覺得和誰分在一組都無所謂。你能告...