完全平方數 bzoj 2440

2022-05-14 05:30:08 字數 1270 閱讀 6253

小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些

數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的數。然而

這絲毫不影響他對其他數的熱愛。 

這天是小x的生日,小 w 想送乙個數給他作為生日禮物。當然他不能送一

個小x討厭的數。他列出了所有小x不討厭的數,然後選取了第 k個數送給了

小x。小x很開心地收下了。 

然而現在小 w 卻記不起送給小x的是哪個數了。你能幫他一下嗎?

包含多組測試資料。檔案第一行有乙個整數 t,表示測試

資料的組數。 

第2 至第t+1 行每行有乙個整數ki,描述一組資料,含義如題目中所描述。 

含t 行,分別對每組資料作出回答。第 i 行輸出相應的

第ki 個不是完全平方數的正整數倍的數。

4 1

13 100

1234567

1 19

163

2030745

對於 100%的資料有 1 ≤ ki ≤ 10^9,   t ≤ 50

/*

有乙個很顯然的結論是最後的答案肯定不超過n*2,然後接可以二分答案,接下來就是判斷有多少<=x的數滿足它的質因數的指數都是1。

乙個方法是去排除所有i^2的倍數(i為素數),這會讓人聯想到容斥?

ans=n-奇數個質數的平方的倍數的個數+偶數個質數的平方的倍數的個數。

利用莫比烏斯函式可以完美的解決這個問題

-1(i為奇數個素數的乘積)

mul[i] = 1(i為偶數個素數的乘積)

0(i有某個因數的指數不為1)

*/#include

#include

#include

#define n 100000

#define lon long long#ifdef unix

#define ll "%lld"

#else

#define ll "%i64d"

#endif

using

namespace

std;

intf[n],prime[n],miu[n];lon n;

void

init()

for(int j=1;j<=prime[0];j++)}}

}lon check(lon mid)

intmain()

printf(ll,ans);printf("\n

");}

return0;

}

BZOJ 2440 完全平方數

time limit 10 sec memory limit 128 mb submit 966 solved 457 submit status 小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些 數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的數。然而 這絲毫不影...

BZOJ2440 完全平方數

description 小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些 數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的數。然而 這絲毫不影響他對其他數的熱愛。這天是小x的生日,小 w 想送乙個數給他作為生日禮物。當然他不能送一 個小x討厭的數。他列出了所有小x不...

BZOJ 2440 完全平方數

求第k個無平方因子的數 無平方因子數,即分解質因數後所有質因數的次數都為1的數.首先轉化為判定性問題,即1 n中有多少個數為無平方因子數 二分答案.根據容斥原理可得 n以內的無平方因子數 0個質數乘積的平方的倍數的數的個數 即n 1個質數乘積的平方的倍數的數的個數 如4的倍數,9的倍數 2個質數乘積...