time limit: 10 sec
memory limit: 128 mb
submit: 2650
solved: 1284 [
submit][
status][
discuss]
小 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 [
submit][
status][
discuss]
詢問第k個無平方因子數
算是莫比烏斯函式的乙個應用吧(但還談不上莫比烏斯反演)
首先二分x,詢問[1,x]中無平方因子數的個數
利用容斥原理
ans = 總數 - 含乙個質因數的平方的因子的數+含兩個質因數的平方的因子的數...
每一項的字首恰好是莫比烏斯函式
ans = ∑u(i)*[x/(i*i)]
∑只需執行到根號x即可
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
const int maxn = 1e9;
const int maxm = 1e6 + 10;
typedef long long ll;
int goal,mu[maxm];
bool bo[maxm];
bool judge(ll now)
return tot >= goal;
}int main()
} int t; scanf("%d",&t);
while (t--)
if (judge(l)) printf("%d\n",l);
else printf("%d\n",r);
} return 0;
}
2440 中山市選2011 完全平方數
題目鏈結 題目大意 求第k個不含有平方數因子 這裡不包括1 的數 題解 明顯沒法直接求,二分一下,需要求1 mid中不含有平方數因子的數的個數無平 方因子 i 0莫比烏 斯函式大 力容斥一 波 枚 舉mid 中的所 有質數,num 0個質數 平方的倍 數的數量 1的倍 數 1 個質數平 方的倍數 的...
2440 中山市選2011 完全平方數
time limit 10 sec memory limit 128 mb submit 4838 solved 2340 submit status discuss 小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些 數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的...
bzoj2440 中山市選2011 完全平方數
time limit 10 sec memory limit 128 mb submit 2219 solved 1067 submit status discuss description 小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些 數看起來很令人難受。由此,他也討厭所有...