博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NOI2010 能量采集
阅读量:6096 次
发布时间:2019-06-20

本文共 3523 字,大约阅读时间需要 11 分钟。

莫比乌斯函数。

不妨设N>=M。

我们发现,坐标(x,y)到(0,0)的连线上有gcd(x,y)个点(包含自己)。

所以答案就是:

$$\sum_{1\leq x\leq N,1\leq y\leq M}2[gcd(x,y)-1]+1$$

$$=\sum_{1\leq x\leq N,1\leq y\leq M}2gcd(x,y)-1$$
$$=2\sum_{1\leq x\leq N,1\leq y\leq M}gcd(x,y)-N*M$$

$其实就是求:$

$$\sum_{1\leq x\leq N,1\leq y\leq M}gcd(x,y)$$

$设g=gcd(x,y),则x=gx',y=gy',gcd(x',y')=1,原式变成:$

$$\sum_{1\leq g\leq M}g\sum_{1\leq x'\leq \left \lfloor\frac{N}{g}\right \rfloor,1\leq y'\leq \left \lfloor\frac{M}{g}\right \rfloor}[(x',y')==1]$$

$有一个结论:$

$$\sum_{d|n}\mu (d)=[n==1]$$

$所以:$

$$\sum_{1\leq g\leq M}g\sum_{1\leq x'\leq \left \lfloor\frac{N}{g}\right \rfloor,1\leq y'\leq \left \lfloor\frac{M}{g}\right \rfloor}\sum_{d|(x',y')}\mu(d)$$

$$\sum_{1\leq g\leq M}g\sum_{1\leq x'\leq \left \lfloor\frac{N}{g}\right \rfloor,1\leq y'\leq \left \lfloor\frac{M}{g}\right \rfloor}\sum_{d|x',d|y'}\mu(d)$$

$设x'=dx'',y'=dy'',原式变成:$

$$\sum_{1\leq g\leq M}\sum_{1\leq d\leq \left \lfloor\frac{M}{g}\right \rfloor}g\mu (d)\sum_{1\leq x''\leq \left \lfloor \frac{N}{gd} \right \rfloor}\sum_{1\leq y''\leq \left \lfloor \frac{M}{gd} \right \rfloor}1$$

$$\sum_{1\leq g\leq M}\sum_{1\leq d\leq \left \lfloor\frac{M}{g}\right \rfloor}g\mu (d)\left\lfloor \frac{N}{gd}\right \rfloor \left\lfloor \frac{M}{gd}\right \rfloor$$

$我们枚举g,其实对于1\leq d\leq \left\lfloor \frac{M}{g}\right \rfloor,\left\lfloor \frac{N}{gd}\right \rfloor的取值最多只有\sqrt{\left\lfloor \frac{N}{g}\right \rfloor}个,\left\lfloor \frac{M}{gd}\right \rfloor的取值最多只有\sqrt{\left\lfloor \frac{M}{g}\right \rfloor}个。$

$我们可以不直接枚举d,而同时从小到大枚举\left\lfloor \frac{N}{gd}\right \rfloor和\left\lfloor \frac{M}{gd}\right \rfloor的取值,然后记住\mu (d)的前缀和,累加即可。$

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//#include
适用于CF,UOJ,但不适用于poj using namespace std;typedef long long LL;typedef double DB;typedef pair
PII;typedef complex
CP;#define mmst(a,v) memset(a,v,sizeof(a))#define mmcy(a,b) memcpy(a,b,sizeof(a))#define re(i,a,b) for(i=a;i<=b;i++)#define red(i,a,b) for(i=a;i>=b;i--)#define fi first#define se second#define m_p(a,b) make_pair(a,b)#define SF scanf#define PF printf#define two(k) (1<<(k))template
inline T sqr(T x){ return x*x;}template
inline void upmin(T &t,T tmp){ if(t>tmp)t=tmp;}template
inline void upmax(T &t,T tmp){ if(t
0)?1:-1;}const DB Pi=acos(-1.0);inline int gint() { int res=0;bool neg=0;char z; for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar()); if(z==EOF)return 0; if(z=='-'){neg=1;z=getchar();} for(;z!=EOF && isdigit(z);res=res*10+z-'0',z=getchar()); return (neg)?-res:res; }inline LL gll() { LL res=0;bool neg=0;char z; for(z=getchar();z!=EOF && z!='-' && !isdigit(z);z=getchar()); if(z==EOF)return 0; if(z=='-'){neg=1;z=getchar();} for(;z!=EOF && isdigit(z);res=res*10+z-'0',z=getchar()); return (neg)?-res:res; }const int maxN=100000;int N,M;LL ans;int flag[maxN+100],cnt,prime[maxN+100];int mo[maxN+100],sum[maxN+100];inline void build() { int i,j; mo[1]=1; re(i,2,M) { if(!flag[i])prime[++cnt]=i,mo[i]=-1; for(j=1;j<=cnt && prime[j]*i<=M;j++) { flag[i*prime[j]]=1; if(i%prime[j]==0) { mo[i*prime[j]]=0; break; } else mo[i*prime[j]]=-mo[i]; } } re(i,1,M)sum[i]=sum[i-1]+mo[i]; }int main() { freopen("energy.in","r",stdin); freopen("energy.out","w",stdout); int i; N=gint();M=gint(); if(N
View Code

 

转载于:https://www.cnblogs.com/maijing/p/4704736.html

你可能感兴趣的文章
Vivado增量式编译
查看>>
关于.net中获取图像缩略图的函数GetThumbnailImage的一些认识。
查看>>
一个很好的幻灯片效果的jquery插件--kinMaxShow
查看>>
微信支付签名配置正确,但返回-1,调不出支付界面(有的手机能调起,有的不能)...
查看>>
leetcode1029
查看>>
Spring和mybatis的整合
查看>>
第二周例行报告
查看>>
DataTable - the existing record can not be merged,just be added
查看>>
Html5最简单的游戏Demo——Canvas绘图的骰子
查看>>
-bash: mysql: command not found 解决办法
查看>>
MySQL密码过期策略
查看>>
UMDF
查看>>
[置顶] CSS禅意花园——CSS设计的绝美境界
查看>>
Git总结
查看>>
7-21测试
查看>>
Microsoft Accelerator for Windows Azure给我们的启示,由 TechStars 撰写
查看>>
学号:201621123032 《Java程序设计》第11周学习总结
查看>>
Access数据库datetime查询问题
查看>>
php数组函数
查看>>
HTML5 中canvas支持触摸屏的签名面板
查看>>