日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ 3930 [CQOI2015]选数

發布時間:2025/4/16 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 3930 [CQOI2015]选数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接

https://lydsy.com/JudgeOnline/problem.php?id=3930

題解

反演得到
∑i=1?h/k?μ(i)(?hki???l?1ki?)n \sum_{i=1}^{\lfloor h/k\rfloor} \mu(i) (\lfloor \frac{h}{ki}\rfloor-\lfloor\frac{l-1}{ki}\rfloor)^n i=1?h/k??μ(i)(?kih????kil?1??)n
整除分塊直接算即可。

代碼

#include <map> #include <cstdio> #include <algorithm>int read() {int x=0,f=1;char ch=getchar();while((ch<'0')||(ch>'9')){if(ch=='-'){f=-f;}ch=getchar();}while((ch>='0')&&(ch<='9')){x=x*10+ch-'0';ch=getchar();}return x*f; }const int maxn=1000000; const int mod=1000000007; const int inf=0x3f3f3f3f;int p[maxn+10],prime[maxn+10],cnt,mu[maxn+10];int getprime() {p[1]=mu[1]=1;for(int i=2; i<=maxn; ++i){if(!p[i]){prime[++cnt]=i;mu[i]=mod-1;}for(int j=1; (j<=cnt)&&(i*prime[j]<=maxn); ++j){int x=i*prime[j];p[x]=1;if(i%prime[j]==0){mu[x]=0;break;}mu[x]=mod-mu[i];}}for(int i=1; i<=maxn; ++i){mu[i]+=mu[i-1];if(mu[i]>=mod){mu[i]-=mod;}}return 0; }std::map<int,int> mp;int getsum(int n) {if(n<=maxn){return mu[n];}if(mp.count(n)){return mp[n];}int ans=1;for(int l=2,r; l<=n; l=r+1){r=n/(n/l);ans-=1ll*(r-l+1)*getsum(n/l)%mod;if(ans<0){ans+=mod;}}return mp[n]=ans; }int n,k,s,t;int quickpow(int a,int b) {int res=1;while(b){if(b&1){res=1ll*res*a%mod;}a=1ll*a*a%mod;b>>=1;}return res; }int main() {getprime();n=read();k=read();s=read();t=read();int ans=0;for(int l=1,r; l<=t/k; l=r+1){r=inf;if(t/(l*k)!=0){r=std::min(r,t/(t/(l*k)));}if((s-1)/(l*k)!=0){r=std::min(r,(s-1)/((s-1)/(l*k)));}r/=k;ans=(ans+1ll*(getsum(r)-getsum(l-1)+mod)*quickpow((t/(k*l))-((s-1)/(k*l)),n))%mod;}printf("%d\n",ans);return 0; }

轉載于:https://www.cnblogs.com/Canopus-wym/p/10376075.html

總結

以上是生活随笔為你收集整理的BZOJ 3930 [CQOI2015]选数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。