hdu2204Eddy s愛好(數論 容斥原理)

2021-09-21 14:28:19 字數 1513 閱讀 5714

problem description

input

本題有多組測試資料,每組包含乙個整數n,1<=n<=1000000000000000000(10^18).

output

對於每組輸入,請輸出在在1到n之間形式如m^k的數的總數。

每組輸出佔一行。

sample input

10 36 1000000000000000000

sample output

4 9 10010033

as we konw ,1~n中能整開k次方的數有個,

而要求1~n中所有能夠被整開的數有幾個,那就是  pow(n,1.0/2)+ pow(n,1.0/3)+······

這樣看來,有很多被重複計算了,比如能開4次方、6次方、8次方的一定能開2次方

所以,我們第一次計算開k次方的時候,就要去除所有能k的倍數次方的

而這就恰是素數的性質,由於資料在long long(2^63-1)的範圍,所以只需算出前63個素數就行,

但是,萬一素數與素數之間重複計算了怎麼辦,那就需要用到容斥原理了,加上奇數個減去偶數個

只需要統計三個素數相乘的冪就行了,因為四個會超出範圍

#include#define lom long long 

using namespace std;

int p=;

int main()}}

cout<

}return 0;

} /*

膜膜膜  膜 膜        膜       膜     膜                  

膜 膜膜膜膜膜膜膜膜      膜        膜    膜                  

膜 膜  膜 膜        膜      膜膜膜膜 膜膜膜膜膜膜               

膜膜膜 膜膜膜膜膜       膜         膜 膜 膜  膜               

膜 膜 膜   膜  膜膜膜膜膜膜膜膜膜膜膜   膜  膜 膜  膜               

膜 膜 膜膜膜膜膜       膜        膜膜 膜膜膜膜膜膜               

膜膜膜 膜   膜      膜 膜      膜膜 膜膜 膜  膜               

膜 膜 膜膜膜膜膜      膜 膜     膜 膜  膜 膜  膜               

膜 膜   膜       膜   膜      膜  膜膜膜膜膜膜               

膜 膜膜膜膜膜膜膜膜    膜   膜      膜  膜 膜  膜               

膜 膜  膜 膜     膜     膜     膜    膜                  

膜 膜膜 膜   膜膜 膜膜       膜膜   膜    膜          

*/

hdu 2204 Eddy s愛好 容斥

根據指數的質數分解進行容斥 比如 k a 3 且 k b 5,那麼 k c 15 所以 a 的可選個數 加 b的可選個數減去c的可減個數就是總的個數了因為 a 3和b 5有重複的 include include include include include include define ll lo...

HDU 2204 Eddy s愛好 容斥

ignatius 喜歡收集蝴蝶標本和郵票,但是eddy的愛好很特別,他對數字比較感興趣,他曾經一度沉迷於素數,而現在他對於一些新的特殊數比較有興趣。這些特殊數是這樣的 這些數都能表示成m k,m和k是正整數且k 1。正當他再度沉迷的時候,他發現不知道什麼時候才能知道這樣的數字的數量,因此他又求助於你...

HDU 2204 Eddy s愛好 容斥

input 本題有多組測試資料,每組包含乙個整數n,1 n 1000000000000000000 10 18 output 對於每組輸入,請輸出在在1到n之間形式如m k的數的總數。每組輸出佔一行。sample input 10 361000000000000000000sample output...