bzoj 2440 (莫比烏斯函式)

2021-07-06 08:19:48 字數 804 閱讀 4704

bzoj 2440 完全平方數

題意:找出第k個不是完全平方數的正整數倍的數。

例如 4  9  16  25 36什麼的

通過容斥原理,我們減去所有完全數  4有n/4個,但是先36這種會被重複減去,

所有我們還需要加上類似36的數,然後你會發現這些數前面的符號和他們開根號的

莫比烏斯函式一樣

資料很大有1e9,

如果先進行預處理再從頭到尾找感覺不現實,考慮使用二分,列舉mid,

然後每次查詢1到mid中不是完全平方數的正整數倍的數的個數

orz:機制的二分使用

#include #include #include #include #include #include #include #include typedef long long ll;

using namespace std;

const int inf = 0x3f3f3f3f;

const int maxn = 1e5;

int tot;

int is_prime[maxn];

int mu[maxn];

int prime[maxn];

void moblus()

for(int j = 0; j < tot && i*prime[j] < maxn; j++)

else}}

}ll get_(ll mid)

return num;

}int main()

printf("%lld\n",l);

}}

BZOJ 2440 莫比烏斯函式

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

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 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些 數看起來很令人難受。由此,他也討厭所有是完全平...