我們由於莫比烏斯函式如果有平方數因子就是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 中取元素的取...