2020牛客多校第八场By Rynar
A.All-Star Game
B.Bon Voyage
C.Cinema
D.Disgusting Relationship
E.Enigmatic Partition
思路:
先找规律,对于每个a1和m的大小(am=a1+2),都有如图的个数
差分
如图消去
再进行一边差分,如图为二次的隔项的差分
typedef long long ll;
const int N=1e6+10;
int n,m,k;
ll f[N];
signed main(){
int T;
for(int i=1;i<=100000;++i){//枚举a1的大小 am=a1+2
for(int j=3;i*j<=100000;++j){//a1...am 枚举m的大小
f[i*j+3]++;f[(i+1)*j+1]--;
f[(i+1)*j+2]--;f[(i+2)*j-3+3]++;
}
}
for(int i=2;i<=100000;i++)f[i]+=f[i-2];//隔项差分
for(int i=1;i<=100000;i++)f[i]+=f[i-1];//差分
for(int i=1;i<=100000;i++)f[i]+=f[i-1];//前缀和
scanf("%d",&T);
for(int cas=1;cas<=T;cas++){
int l,r;
scanf("%d%d",&l,&r);
printf("Case #%d: %lld\n",cas,f[r]-f[l-1]);
}
return 0;
}
F.Factorio
G.Game SET
H.Hard String Problem
I.Interesting Computer Game
J.Jumping Points
K.Kabaleo Lite
禁止类似码农教程的网站爬取,抄袭博客内容。
https://www.cnblogs.com/rair/