題目
題意:第ki 個不是完全平方數的正整數倍的數。
對於乙個數t,t以內的數里的非完全平方數倍數的個數:num=1的倍數的數量−乙個質數平方數(9,25,49...)的倍數的數量+兩個質數的積平方數(36,100,225...)的數量−三個質數balabala……
所以u(i)就是莫比烏斯函式
求莫比烏斯函式**:
//遞推
ll mu[100005];
void mobius(ll mn)
}}//main
mobius(100000);
//線性篩法求莫比烏斯函式
bool check[maxn+10];
int prime[maxn+10];
int mu[maxn+10];
void moblus()
for(int j = 0; j < tot; j++)
else
} }
}
所以**:
#include #include typedef long long ll;
const ll m=100001;
ll t,n,miu[m],pri[m],bo[m],ans;
void makemiu()
for (ll j=1;j<=pri[0] && pri[j]*i}}
}ll check(ll t)
ll getans(ll t)
return r;
}int main()
}
BZOJ 2440 完全平方數(莫比烏斯函式)
這道題需要驚人的聯想能力和很大的腦洞 然後將它聯絡到莫比烏斯函式上。我也是看神犇的部落格的。首先容易想到二分答案,然後判斷當前的滿足條件的數。具體怎樣得出的請大家自己yy吧。include include include includeusing namespace std 利用莫比烏斯函式求值 d...
BZOJ 2440 完全平方數 莫比烏斯反演
bzoj 2440 完全平方數 參考popoqqq神的ppt 首先二分答案 問題轉化為求 1,x 之間有多少個無平方因子數 根據容斥原理可知 對於sqrt x 以內所有的質數 有 x以內的無平方因子數 0個質數乘積的平方的倍數的數的數量 1的倍數 每個質數的平方的倍數的數的數量 9的倍數,25的倍數...
BZOJ 2440 完全平方數
time limit 10 sec memory limit 128 mb submit 966 solved 457 submit status 小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些 數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的數。然而 這絲毫不影...