LINK:LCMs

随便找了道题练习了一下莫比乌斯反演 式子有两个地方化简错误 导致查了1h的错。

讲一下大致思路 容易发现直接做事\(n^2logn\)的。

观察得到数字集合大小为1e6.

可以设\(b_i\)表示i出现了多少次 再进行计算LCM。

经过一些处理可以开始反演。

可以直接得到一个nlogn的做法。经过更换枚举顺序后 之后nlogn预处理前缀和可以\(sqrt(n)\)求答案。

推式子的时候要小心一点 很容易推错的。

const int MAXN=1000010,INV=(mod+1)>>1;
int n,maxx,top;
int a[MAXN],s[MAXN];
int v[MAXN],p[MAXN],mu[MAXN];
inline void prepare()
{
mu[1]=1;
rep(2,maxx,i)
{
if(!v[i])
{
p[++top]=i;
v[i]=i;mu[i]=-1;
}
rep(1,top,j)
{
if(p[j]>maxx/i)break;
v[p[j]*i]=p[j];
if(v[i]==p[j])break;
mu[p[j]*i]=-mu[i];
}
}
rep(1,maxx,i)
{
int ww=maxx/i;
rep(1,ww,j)s[i]=(s[i]+(ll)j*a[i*j])%mod;
}
}
signed main()
{
freopen("1.in","r",stdin);
get(n);int cnt1=0,cnt2=0;
rep(1,n,i){int get(x);++a[x];maxx=max(maxx,x);}
prepare();int ans=0;
rep(1,maxx,i)
{
cnt1=(cnt1+(ll)a[i]*a[i]%mod*i)%mod;
cnt2=(cnt2+((ll)a[i]*(a[i]-1)/2)%mod*i)%mod;
int ww=maxx/i;
rep(1,ww,j)
ans=(ans+(ll)mu[j]*j*j%mod*i%mod*s[(i*j)]%mod*s[(i*j)])%mod;
}
ans=(ll)(ans-cnt1+mod)*INV%mod;
ans=(ans+cnt2)%mod;put(ans);
return 0;
}

AT5200 [AGC038C] LCMs 莫比乌斯反演的更多相关文章

  1. hdu1695 GCD(莫比乌斯反演)

    题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...

  2. BZOJ 2154: Crash的数字表格 [莫比乌斯反演]

    2154: Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2924  Solved: 1091[Submit][Status][ ...

  3. BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MBSubmit: 4032  Solved: 1817[Submit] ...

  4. Bzoj2154 Crash的数字表格 乘法逆元+莫比乌斯反演(TLE)

    题意:求sigma{lcm(i,j)},1<=i<=n,1<=j<=m 不妨令n<=m 首先把lcm(i,j)转成i*j/gcd(i,j) 正解不会...总之最后化出来的 ...

  5. 莫比乌斯函数筛法 & 莫比乌斯反演

    模板: int p[MAXN],pcnt=0,mu[MAXN]; bool notp[MAXN]; void shai(int n){ mu[1]=1; for(int i=2;i<=n;++i ...

  6. 【BZOJ-2440】完全平方数 容斥原理 + 线性筛莫比乌斯反演函数 + 二分判定

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2371  Solved: 1143[Submit][Sta ...

  7. POI2007_zap 莫比乌斯反演

    题意:http://hzwer.com/4205.html 同hdu1695 #include <iostream> #include <cstring> #include & ...

  8. hdu.5212.Code(莫比乌斯反演 && 埃氏筛)

    Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submi ...

  9. CSU 1325 莫比乌斯反演

    题目大意: 一.有多少个有序数对(x,y)满足1<=x<=A,1<=y<=B,并且gcd(x,y)为p的一个约数: 二.有多少个有序数对(x,y)满足1<=x<=A ...

随机推荐

  1. 你不知道的前端SDK开发技巧

    最近在做公司内部的一个的一个SDK的重构,这里总结一些经验分享给大家. 类型检查和智能提示 作为一个SDK,我们的目标是让使用者能够减少查看文档的时间,所以我们需要提供一些类型的检查和智能提示,一般我 ...

  2. 关于小白一天摆弄Axure产品原型的心得

    因为项目所需,被迫快速设计产品原型,制作app使用视频,这里简单分享一些一个小白第一次触碰产品原型设计的一些心得: 原型设计工具的选用 我这里针对的是贫穷学生党,分享的是自己尝试的几款.有钱大佬自行绕 ...

  3. 记一次线上服务CPU 100%的处理过程

    告警 正在开会,突然钉钉告警声响个不停,同时市场人员反馈客户在投诉系统登不进了,报504错误.查看钉钉上的告警信息,几台业务服务器节点全部报CPU超过告警阈值,达100%. 赶紧从会上下来,SSH登录 ...

  4. vue项目发布时去除console语句

    在vue.config.js中添加下面的代码即可 // vue-cli version > 3 modeule.exports = { configureWebpack: config => ...

  5. scrapy(一):基础用法

    Scrapy 框架 Scrapy 简介 Scray 是用python写的为了爬取网站数据,提取结构性数据的应用框架 Scrapy框架原理图 白话讲解Scrapy 运作流程 代码写好,程序开始运行... ...

  6. java 面向对象(三十五):泛型在继承上的体现

    泛型在继承上的体现: /* 1. 泛型在继承方面的体现 虽然类A是类B的父类,但是G<A> 和G<B>二者不具备子父类关系,二者是并列关系. 补充:类A是类B的父类,A< ...

  7. java 面向对象(十七):单元测试方法

    * Java中的JUnit单元测试 * * 步骤: * 1.中当前工程 - 右键择:build path - add libraries - JUnit 4 - 下一步 * 2.创建Java类,进行单 ...

  8. Quartz.Net系列(十四):详解Job中两大特性(DisallowConcurrentExecution、PersistJobDataAfterExecution)

    1.DisallowConcurrentExceution 从字面意思来看也就是不允许并发执行 简单的演示一下 [DisallowConcurrentExecution] public class T ...

  9. HotSpot的对象模型(5)

    Java对象通过Oop来表示.Oop指的是 Ordinary Object Pointer(普通对象指针).在 Java 创建对象实例的时候创建,用于表示对象的实例信息.也就是说,在 Java 应用程 ...

  10. WindowsTerminal折腾记

    背景 Windows Terminal最近出了1.0版本,界面非常美观,但要配置好还是要下一番功夫,而且网上的教程都是互相抄,所以特将我的配置过程记录如下. 字体 首先是字体,默认字体英文不错,但中文 ...