BZOJ 2440 莫比烏斯函式

2021-09-10 12:00:22 字數 1547 閱讀 1764

題目鏈結

description

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

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

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

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

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

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

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

input

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

資料的組數。

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

output

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

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

sample input

4 

1 13

100

1234567

sample output
1 

19 163

2030745

hint

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

思路

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define lowbit(x) (x & (-x))

#define mem(a, b) memset(a, b, sizeof(a))

#define rep(i, a, n) for (int i = a; i < n; ++i)

#define mid ((l + r)>>1)

#define lc rt<<1

#define rc rt<<1|1

typedef

long

long ll;

#define maxn 100005

using

namespace std;

int mo[maxn]

, vis[maxn]

, prime[maxn]

;void init (

)for

(int j =

0; j < len &&

(ll)prime[j]

* i < maxn;

++j)

mo[ i * prime[j]]=

-mo[i];}

}}intsolve

(int x)

return sum;

}int

main()

printf

("%d\n"

, l);}

return0;

}

bzoj 2440 (莫比烏斯函式)

bzoj 2440 完全平方數 題意 找出第k個不是完全平方數的正整數倍的數。例如 4 9 16 25 36什麼的 通過容斥原理,我們減去所有完全數 4有n 4個,但是先36這種會被重複減去,所有我們還需要加上類似36的數,然後你會發現這些數前面的符號和他們開根號的 莫比烏斯函式一樣 資料很大有1e...

BZOJ 2440 莫比烏斯函式的應用

題意 全然平方數是指含有平方數因子的數。求第ki個非全然平方數。解法 比較明顯的二分,getsum int middle 求1 middle有多少個非全然平方數,然後二分。求1 middle的非全然平方數個數能夠用總數減掉全然平方數個數。計算全然平方數的個數用容斥 首先加上n 2 2 n 3 3 n...

bzoj 2440 莫比烏斯反演應用

2440 中山市選2011 完全平方數 time limit 10 sec memory limit 128 mb submit status discuss description 小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些 數看起來很令人難受。由此,他也討厭所有是完全平...