湖南2015省队集训(bzoj4174)tty的求助
2015-09-08 13:11
381 查看
文章来自我的新博客
~~~~距离这道题目出现已经很久了,正好刚刚搭的新博客,所以就来水一发题解。
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~∑m−1k=0⌊nk+xm⌋=∑m−1k=0(⌊nk−nk%mm⌋+⌊nk%m+xm⌋)=∑m−1k=0nkm−∑m−1k=0nk%mm+∑m−1k=0⌊nk%m+xm⌋\sum_{k=0}^{m-1}\left \lfloor \frac{nk+x}{m} \right \rfloor=\sum_{k=0}^{m-1}(\left \lfloor \frac{nk-nk\%m}{m} \right \rfloor+\left \lfloor \frac{nk\%m+x}{m} \right \rfloor)=\sum_{k=0}^{m-1}\frac{nk}{m}-\sum_{k=0}^{m-1}\frac{nk\%m}{m}+\sum_{k=0}^{m-1}\left \lfloor \frac{nk\%m+x}{m} \right \rfloor
~~~~令gcd(n,m)=dgcd(n,m)=d不难发现,nk%mnk\%m取了dd遍数列0,d,2d,3d,4d......m−d0,d,2d,3d,4d......m-d
~~~~所以有:∑m−1k=0⌊nk+xm⌋=∑m−1k=0nkm−∑m−1k=0nk%mm+∑m−1k=0⌊nk%m+xm⌋\sum_{k=0}^{m-1}\left \lfloor \frac{nk+x}{m} \right \rfloor=\sum_{k=0}^{m-1}\frac{nk}{m}-\sum_{k=0}^{m-1}\frac{nk\%m}{m}+\sum_{k=0}^{m-1}\left \lfloor \frac{nk\%m+x}{m} \right \rfloor
~~~~=n∗(m−1)2−d∑md−1k=0kdm+d∑md−1k=0⌊kd+xm⌋=n∗(m−1)2−(m−d)2+d∑md−1k=0⌊kmd+xm⌋=\frac{n*(m-1)}{2}-d\sum_{k=0}^{\frac{m}{d}-1}\frac{kd}{m}+d\sum_{k=0}^{\frac{m}{d}-1}\left \lfloor \frac{kd+x}{m}\right \rfloor=\frac{n*(m-1)}{2}-\frac{(m-d)}{2}+d\sum_{k=0}^{\frac{m}{d}-1}\left \lfloor \frac{k}{\frac{m}{d}}+\frac{x}{m}\right \rfloor
~~~~根据具体数学上的黑科技:∑m−1k=0⌊x+km⌋=⌊mx⌋\sum_{k=0}^{m-1}\left \lfloor x+\frac{k}{m} \right\rfloor=\left \lfloor mx \right\rfloor
~~~~所以有:∑m−1k=0⌊nk+xm⌋=n∗(m−1)2−m−d2+d⌊xd⌋=(n∗m−n−m+1+d+2d⌊xd⌋2\sum_{k=0}^{m-1}\left \lfloor \frac{nk+x}{m} \right \rfloor=\frac{n*(m-1)}{2}-\frac{m-d}{2}+d\left \lfloor \frac{x}{d}\right \rfloor=\frac{(n*m-n-m+1+d+2d\left \lfloor \frac{x}{d}\right \rfloor}{2}
~~~~之后就是经典的容斥问题了,首先我们枚举 dd ,
~~~~所以 ans=∑Nn=1∑Mm=1n∗m−n−m+d+2d⌊xd⌋2ans=\sum_{n=1}^N\sum_{m=1}^M\frac{n*m-n-m+d+2d\left \lfloor \frac{x}{d}\right \rfloor}{2}
~~~~~~~~~~~~~~~~~=∑min(N,M)d=1∑min(Nd,Md)k=1μ(k)∗(a∗b∗d∗⌊xd⌋+ab(a+1)(b+1)∗D24−a(a+1)b∗D2−b(b+1)a∗D2)=\sum_{d=1}^{min(N,M)}\sum_{k=1}^{min(\frac{N}{d},\frac{M}{d})}\mu(k)*(a*b*d*\left \lfloor \frac{x}{d}\right \rfloor+\frac{ab(a+1)(b+1)*D^2}{4}-\frac{a(a+1)b*D}{2}-\frac{b(b+1)a*D}{2})
~~~~其中a=⌊Nkd⌋,b=⌊Mkd⌋,D=kda=\left \lfloor \frac{N}{kd} \right \rfloor,b=\left \lfloor \frac{M}{kd} \right \rfloor,D=kd
~~~~
~~~~
~~~~
题外话:
~~~~当时我们老师要我们三个人出一套题目给 noinoi 集训,然后我们当时就吓尿了!!!各种担心出的题目太水被秒。。。。。然而事实上效果还不错,只有 yytyyt 一位爷 AA 掉了,悲伤的是 mxmx 爆 longlonglonglong 了。。。。。~~~~距离这道题目出现已经很久了,正好刚刚搭的新博客,所以就来水一发题解。
~~~~
~~~~
~~~~
description:
~~~~计算∑Nn=1∑Mm=1∑m−1k=0⌊nk+xm⌋\sum_{n=1}^N\sum_{m=1}^M\sum_{k=0}^{m-1}\left \lfloor \frac{nk+x}{m} \right \rfloor对998244353998244353取模的答案。~~~~
~~~~
~~~~
solution
~~~~首先考虑∑m−1k=0⌊nk+xm⌋\sum_{k=0}^{m-1}\left \lfloor \frac{nk+x}{m} \right \rfloor~~~~∑m−1k=0⌊nk+xm⌋=∑m−1k=0(⌊nk−nk%mm⌋+⌊nk%m+xm⌋)=∑m−1k=0nkm−∑m−1k=0nk%mm+∑m−1k=0⌊nk%m+xm⌋\sum_{k=0}^{m-1}\left \lfloor \frac{nk+x}{m} \right \rfloor=\sum_{k=0}^{m-1}(\left \lfloor \frac{nk-nk\%m}{m} \right \rfloor+\left \lfloor \frac{nk\%m+x}{m} \right \rfloor)=\sum_{k=0}^{m-1}\frac{nk}{m}-\sum_{k=0}^{m-1}\frac{nk\%m}{m}+\sum_{k=0}^{m-1}\left \lfloor \frac{nk\%m+x}{m} \right \rfloor
~~~~令gcd(n,m)=dgcd(n,m)=d不难发现,nk%mnk\%m取了dd遍数列0,d,2d,3d,4d......m−d0,d,2d,3d,4d......m-d
~~~~所以有:∑m−1k=0⌊nk+xm⌋=∑m−1k=0nkm−∑m−1k=0nk%mm+∑m−1k=0⌊nk%m+xm⌋\sum_{k=0}^{m-1}\left \lfloor \frac{nk+x}{m} \right \rfloor=\sum_{k=0}^{m-1}\frac{nk}{m}-\sum_{k=0}^{m-1}\frac{nk\%m}{m}+\sum_{k=0}^{m-1}\left \lfloor \frac{nk\%m+x}{m} \right \rfloor
~~~~=n∗(m−1)2−d∑md−1k=0kdm+d∑md−1k=0⌊kd+xm⌋=n∗(m−1)2−(m−d)2+d∑md−1k=0⌊kmd+xm⌋=\frac{n*(m-1)}{2}-d\sum_{k=0}^{\frac{m}{d}-1}\frac{kd}{m}+d\sum_{k=0}^{\frac{m}{d}-1}\left \lfloor \frac{kd+x}{m}\right \rfloor=\frac{n*(m-1)}{2}-\frac{(m-d)}{2}+d\sum_{k=0}^{\frac{m}{d}-1}\left \lfloor \frac{k}{\frac{m}{d}}+\frac{x}{m}\right \rfloor
~~~~根据具体数学上的黑科技:∑m−1k=0⌊x+km⌋=⌊mx⌋\sum_{k=0}^{m-1}\left \lfloor x+\frac{k}{m} \right\rfloor=\left \lfloor mx \right\rfloor
~~~~所以有:∑m−1k=0⌊nk+xm⌋=n∗(m−1)2−m−d2+d⌊xd⌋=(n∗m−n−m+1+d+2d⌊xd⌋2\sum_{k=0}^{m-1}\left \lfloor \frac{nk+x}{m} \right \rfloor=\frac{n*(m-1)}{2}-\frac{m-d}{2}+d\left \lfloor \frac{x}{d}\right \rfloor=\frac{(n*m-n-m+1+d+2d\left \lfloor \frac{x}{d}\right \rfloor}{2}
~~~~之后就是经典的容斥问题了,首先我们枚举 dd ,
~~~~所以 ans=∑Nn=1∑Mm=1n∗m−n−m+d+2d⌊xd⌋2ans=\sum_{n=1}^N\sum_{m=1}^M\frac{n*m-n-m+d+2d\left \lfloor \frac{x}{d}\right \rfloor}{2}
~~~~~~~~~~~~~~~~~=∑min(N,M)d=1∑min(Nd,Md)k=1μ(k)∗(a∗b∗d∗⌊xd⌋+ab(a+1)(b+1)∗D24−a(a+1)b∗D2−b(b+1)a∗D2)=\sum_{d=1}^{min(N,M)}\sum_{k=1}^{min(\frac{N}{d},\frac{M}{d})}\mu(k)*(a*b*d*\left \lfloor \frac{x}{d}\right \rfloor+\frac{ab(a+1)(b+1)*D^2}{4}-\frac{a(a+1)b*D}{2}-\frac{b(b+1)a*D}{2})
~~~~其中a=⌊Nkd⌋,b=⌊Mkd⌋,D=kda=\left \lfloor \frac{N}{kd} \right \rfloor,b=\left \lfloor \frac{M}{kd} \right \rfloor,D=kd
~~~~
~~~~
~~~~
code
#include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> #include <iostream> using namespace std; const long long Mod=998244353; long long mu[500010]={0}; int hash[500010]={0}; int prime[500010]={0}; int ptot=0; long long N,M; double x; long long power(long long a,long long k) { long long o=1; for(;k>0;) { if(k&1) o=o*a%Mod; a=a*a%Mod; k>>=1; } return o; } void Pre_() { mu[1]=1; for(int i=2;i<=N;i++) { if(hash[i]==0) { prime[++ptot]=i; mu[i]=-1; } for(int j=1;prime[j]*i<=N && j<=ptot;j++) { hash[prime[j]*i]=1; if(i%prime[j]==0) { mu[i*prime[j]]=0; break; } mu[i*prime[j]]=-mu[i]; } } return; } int main() { cin>>N>>M>>x; if(N>M) swap(N,M); Pre_(); long long inv=power(2,Mod-2); long long ans=0; for(long long d=1;d<=N;d++) { for(long long k=N/d;k>=1;k--) { long long a=N/d/k,b=M/d/k,D=k*d; ans=(ans+mu[k]*((a*(a+1)/2*D%Mod*(b*(b+1)/2*D%Mod)%Mod-a*(a+1)/2*D%Mod*b%Mod-b*(b+1)/2*D%Mod*a%Mod+(((d*((int)(x/d)))<<1)*a*b%Mod+d*a*b%Mod))+(Mod<<1)))%Mod; } } cout<<ans*inv%Mod<<endl; return 0; }
相关文章推荐
- GO 1.5 代码编译安装 [centos7 64位]
- poj3159candies
- Lua5.0 示例程序抽样
- hadoop权威指南(第四版)要点翻译(6)——Chapter 4. YARN(1)
- 解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题
- 将成员变量声明为private和用非成员、非友友提高封装性(Effective C++_22、23))
- hdu3466
- C#求平均分和高于平均分的同学姓名。
- java通过HTTP接收xml和返回xml
- 智力类笔试题基础(图形1
- zoj2112(单点修改区间第K小)
- 使用adb解锁
- [Hnoi2013]游走(bzoj3143)
- BA--无风机冷却塔
- SMTP邮件服务器配置
- Android之TextView实现跑马灯的效果(笔记)
- POJ 2976 Dropping tests(最大化平均值)
- jQury animate操作 background-position 方法
- bzoj 3238: [Ahoi2013]差异
- JMeter性能测试基础 (3) - 使用参数文件做搜索引擎性能对比