HDU 2204 Eddy s愛好 容斥

2021-08-30 08:38:52 字數 661 閱讀 9092

input

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

output

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

每組輸出佔一行。

sample input

10

361000000000000000000

sample output

4

91001003332

題解:很明顯要用容斥去做,但1e18最多可以開64次方,64以內的素數有18個,但是2*3*5=30 所以容斥3層即可

1次方是不能算的 所以計算的時候都要減1  但是1可以寫成1的任意次方 所以結果加1

#include#include#include#include#includeusing namespace std;

const int n=12;

typedef long long ll;

ll n,m,a[n];

int prime[70];

int ok[50],len;

void init()

}}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。正當他再度沉迷的時候,他發現不知道什麼時候才能知道這樣的數字的數量,因此他又求助於你...

hdu2204 Eddy s愛好(容斥)

題意 給定n,問有多少個p m k,滿足p n 要求m 1,k 1 資料範圍 n 1e18 解法 顯然列舉m肯定不行,因為m 2 1e18 那麼m 1e9,考慮列舉k,2 60 1e18 因此列舉k最多列舉60個,如果k是乙個合數,那麼k可以拆分為乙個數與質數的乘積 k x p,那麼m k可以變為m...