51nod 1742 開心的小Q

2022-05-08 03:54:10 字數 1417 閱讀 4500

我們由於莫比烏斯函式如果有平方數因子就是0,那麼我們可以列出這樣的式子

\(\sum_^ \sum_ (1 - |\mu(d)|)\)

然後列舉倍數

\(\sum_^ \sum_^ \rfloor} (1 - |\mu(d)|)\)

\(\sum_^ f(\lfloor \frac \rfloor)\)

\(f(x)\)就表示1 - x有多少數有平方因子

可以用容斥得到

\(f(n) = n - \sum_^}\mu(i) \lfloor \frac\rfloor\)

這個複雜度是\(n^}\)的,因為對於大於\(n^}\)的i,除數肯定小於\(n^}\)

然後我們的複雜度就是

\(o(\sqrt + \sum_^} (\frac)^})\)可以解決問題

#include #include #include #include #include #include #include #include #include #define enter putchar('\n')

#define space putchar(' ')

//#define ivorysi

#define pb push_back

#define mo 974711

#define pii pair#define mp make_pair

#define fi first

#define se second

#define maxn 200005

using namespace std;

typedef long long int64;

typedef double db;

templatevoid read(t &res)

while(c >= '0' && c <= '9')

res = res * f;

}templatevoid out(t x)

if(x >= 10) out(x / 10);

putchar('0' + x % 10);

}int prime[100005],tot,mu[100005],m[100005];

bool nonprime[100005];

int f(int x)

return x - res;

}int64 solve(int x)

return res;

}int main()

for(int j = 1 ; j <= tot ; ++j)

m[i] = m[i - 1] + mu[i];

}int a,b;

read(a);read(b);

out(solve(b) - solve(a - 1));

enter;

}

51nod 1742 開心的小Q 莫比烏斯函式

題解 分析 完全是看著題解還想半天才會做的。糾正乙個錯誤,題解中的f n 和s n 中都應該是取整而不是下取整.首先s n 的式子不難想到,問題就在於資料範圍太大,強求會t掉.換一下求和順序,列舉i d,再列舉d,就可以將原式變形成乙個對f n 求和的式子,然後從1到n中,f i 有重複,只需要計算...

51nod 歡樂手速場C 開心的小Q

開心的小q tangjz 命題人 quailty 測試 基準時間限制 1 秒 空間限制 131072 kb 分值 80 如果乙個數字存在乙個約數是完全平方數,那麼小q就認為這個數是有趣的。小q喜歡收集有趣的數字,每找到乙個有趣的數,小q就會變得很開心。小q發現12是有趣的,18也是有趣的,它們都是3...

51nod 1778 小Q的集合

原題連線 題目繞了一點。並沒有直接給出數字形式。而且這個題有好像有很多方法。我也yy了乙個 不過還是題解多效率高 題目中是給定了乙個集合 s 並且有 s n 要說明的是。這個集合是沒有重複元素的集合。這一點很重要 其實不特別說明。一般集合也都沒有重複元素。集合s的子集數量等價於 從 s 中取元素的取...