[CODECHEF]LCM
题意:询问满足$1\leq x\leq n,1\leq y\leq m$且$x,y$均无平方因子的有序对$(x,y)$的$[x,y]$之和,多组数据
以下假设$n\leq m$,设$S(n)=\frac{n(n+1)}2$,$r(n)$表示$n$的最大无平方因子
$\begin{align*}\sum\limits_{i=1}^n\sum\limits_{j=1}^m\mu^2\left((i,j)\right)[i,j]&=\sum\limits_{d=1}^nd\mu^2(d)\sum\limits_{i=1}^{\left\lfloor\frac nd\right\rfloor}\sum\limits_{j=1}^{\left\lfloor\frac md\right\rfloor}[i,j][(i,j)=1]\\&=\sum\limits_{d=1}^nd\mu^2(d)\sum\limits_{e=1}^{\left\lfloor\frac nd\right\rfloor}e\mu(e)\sum\limits_{i=1}^{\left\lfloor\frac n{de}\right\rfloor}\sum\limits_{j=1}^{\left\lfloor\frac m{de}\right\rfloor}[i,j]\\&=\sum\limits_{T=1}^nT\sum\limits_{d|T}\mu^2(d)\mu\left(\frac Td\right)\sum\limits_{i=1}^{\left\lfloor\frac nT\right\rfloor}\sum\limits_{j=1}^{\left\lfloor\frac mT\right\rfloor}[i,j]\end{align*}$
暂停一下,先化一下其中的一部分式子
1.$G(n)=\sum\limits_{d|n}\mu^2(d)\mu\left(\frac nd\right)$
设$n=a^2b$,其中$\mu(b)\ne0$,那么仅当$d=ac$且$(a,c)=1$时$\mu^2(d)\mu\left(\frac nd\right)\ne0$(若$a\nmid d$则$\frac nd$含来自$a$的平方因子,若$(a,c)\ne1$则$d$含平方因子),此时$G(n)=\sum\limits_{c|b}\mu\left(\frac{a^2b}{ac}\right)=\mu(a)\sum\limits_{c|b}\mu\left(\frac bc\right)=\mu(a)[b=1]$,这说明当$n$为完全平方数时,$G(n)=\mu\left(\sqrt n\right)$,否则$G(n)=0$
2.$F(n,m)=\sum\limits_{i=1}^n\sum\limits_{j=1}^m[i,j]$
直接把jzptab的式子搬过来,$F(n,m)=\sum\limits_{T=1}^nTS\left(\left\lfloor\frac nT\right\rfloor\right)S\left(\left\lfloor\frac mT\right\rfloor\right)\sum\limits_{e|T}e\mu(e)$
这里我们每次求答案都要求很多次$F$,所以还要继续推下去
$Q(n)=\sum\limits_{e|n}e\mu(e)$
首先显然$Q(n)=Q(r(n))$,因为$n$的平方因子对答案没有贡献,接下来考虑$n=r(n)$的情况,设$n=\prod\limits_{i=1}^kp_i$
当$n$为质数时$Q(n)=1-n$,因为$Q$是个积性函数,所以$Q(n)=\prod\limits_{i=1}^k(1-p_i)=(-1)^k\varphi(n)=\mu(n)\varphi(n)$,即是说对于一般的$n$有$Q(n)=\mu(r(n))\varphi(r(n))$
把以上两个结果代入到开始时的式子中,得到$\sum\limits_{p=1}^{\left\lfloor\sqrt n\right\rfloor}p^2\mu(p)\sum\limits_{q=1}^{\left\lfloor\frac n{p^2}\right\rfloor}qQ(q)S\left(\left\lfloor\frac n{p^2q}\right\rfloor\right)S\left(\left\lfloor\frac m{p^2q}\right\rfloor\right)$
枚举$T=p^2q$,得到$\sum\limits_{T=1}^nTS\left(\left\lfloor\frac nT\right\rfloor\right)S\left(\left\lfloor\frac mT\right\rfloor\right)\sum\limits_{p^2|T}\mu(p)Q\left(\frac T{p^2}\right)$
我们要预处理$D(n)=\sum\limits_{p^2|n}\mu(p)Q\left(\frac n{p^2}\right)$,这个直接枚举$p$去更新$p^2$的倍数即可,时间复杂度为$O\left(n\sum\limits_{i=1}^{\left\lfloor\sqrt n\right\rfloor}\frac1{i^2}\right)=O(n)$
总时间复杂度$O\left(n+T\sqrt n\right)$,这题还是挺棒的==
一个小小的trick:我们可以算出答案的$4$倍$\bmod2^{32}$的值,最后$\div4$即可,这样在求$S(n)$的时候不用$\div2$而且可以全程unsigned
#include<stdio.h> typedef unsigned uint; const int T=4000010; int min(int a,int b){return a<b?a:b;} void swap(int&a,int&b){a^=b^=a^=b;} int pr[T+10],r[T+10],mu[T+10],phi[T+10]; bool np[T+10]; uint D[T+10]; void sieve(){ int i,j,M; M=0; r[1]=1; mu[1]=1; phi[1]=1; for(i=2;i<=T;i++){ if(!np[i]){ pr[++M]=i; r[i]=i; mu[i]=-1; phi[i]=i-1; } for(j=1;j<=M&&i*pr[j]<=T;j++){ np[i*pr[j]]=1; if(i%pr[j]==0){ r[i*pr[j]]=r[i]; phi[i*pr[j]]=phi[i]*pr[j]; break; } r[i*pr[j]]=r[i]*pr[j]; mu[i*pr[j]]=-mu[i]; phi[i*pr[j]]=phi[i]*(pr[j]-1); } } for(i=1;i*i<=T;i++){ if(mu[i]){ for(j=i*i;j<=T;j+=i*i)D[j]+=mu[i]*mu[r[j/(i*i)]]*phi[r[j/(i*i)]]; } } for(i=1;i<=T;i++)D[i]=D[i]*i; for(i=1;i<=T;i++)D[i]+=D[i-1]; } uint S(uint n){return n*(n+1);} uint solve(int n,int m){ uint s; int i,nex; for(i=1;i<=n;i=nex+1){ nex=min(n/(n/i),m/(m/i)); s+=(D[nex]-D[i-1])*S(n/i)*S(m/i); } return s; } int main(){ sieve(); int T,n,m; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); if(n>m)swap(n,m); printf("%u\n",solve(n,m)>>2); } }
[CODECHEF]LCM的更多相关文章
- scau 2015寒假训练
并不是很正规的.每个人自愿参与自愿退出,马哥找题(马哥超nice么么哒). 放假第一周与放假结束前一周 2015-01-26 http://acm.hust.edu.cn/vjudge/contest ...
- CodeChef Sereja and LCM(矩阵快速幂)
Sereja and LCM Problem code: SEALCM Submit All Submissions All submissions for this problem ar ...
- CC Subarray LCM (数学)
题目连接:http://www.codechef.com/problems/SUBLCM 题意:给定一个序列,求最长连续子序列满足 LCM(Ai,Ai+1...Aj) =Ai*Ai+1*...*Aj. ...
- Codechef September Challenge 2018 游记
Codechef September Challenge 2018 游记 Magician versus Chef 题目大意: 有一排\(n(n\le10^5)\)个格子,一开始硬币在第\(x\)个格 ...
- LCM性质 + 组合数 - HDU 5407 CRB and Candies
CRB and Candies Problem's Link Mean: 给定一个数n,求LCM(C(n,0),C(n,1),C(n,2)...C(n,n))的值,(n<=1e6). analy ...
- CodeBlocks及LCM应用
以下是在开发过程中遇到的一些细节点: 1)called after throwing an instance of std::bad_alloc 此问题是由于publish(data),当中data赋 ...
- 【BZOJ-3514】Codechef MARCH14 GERALD07加强版 LinkCutTree + 主席树
3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 1288 Solved: 490 ...
- LCM 轻量级通信组件
LCM和ZMQ比较 http://www.doc88.com/p-6711552253536.html 基于LCM和ZeroMQ的进程间通信研究 2.简介 LCM(Lightweight Commuc ...
- uva12546. LCM Pair Sum
uva12546. LCM Pair Sum One of your friends desperately needs your help. He is working with a secret ...
随机推荐
- 【CF1009F】 Dominant Indices (长链剖分+DP)
题目链接 \(O(n^2)\)的\(DP\)很容易想,\(f[u][i]\)表示在\(u\)的子树中距离\(u\)为\(i\)的点的个数,则\(f[u][i]=\sum f[v][i-1]\) 长链剖 ...
- Cordova入门
创建你的第一个App 因为对接要对接酷音,实现h5跨平台调用客户端的保存和分享功能,所以学了下cordova的入门. 安装Cordova CLI Cordova命令行工具作为npm包分发. 安装cor ...
- 玩一下易语言 "和"字有多种读音,注定了它的重要性!!
变量名 类型 静态 数组 备注 拼音 文本型 0 测试的汉字 文本型 有几种发音 整数型 i 整数型 测试用的汉字 = “和” 有几种发音 = 取发音数目 ...
- Part2-HttpClient官方教程-Chapter5-流利的API
5.1. 易于使用的Facade API 使用之前注意引入相应Jar包或者Maven依赖 <dependency> <groupId>org.apache.httpcompon ...
- Perl6 Bailador框架(2):路径设置
use v6; use Bailador; =begin pod get表示是get发送 post表示是post发送 get/post 后面的 '/name' 表示是路径 => sub {} 是 ...
- arping详解
arping干嘛用的? arping主要干的活就是查看ip的MAC地址及IP占用的问题. 参数 -0:指定源地址为0.0.0.0,这个一般是在我们刚刚安装好系统,电脑还没配置好IP的时候 -a:Aud ...
- Python基础=== Tkinter Grid布局管理器详解
本文转自:https://www.cnblogs.com/ruo-li-suo-yi/p/7425307.html @ 箬笠蓑衣 Grid(网格)布局管理器会将控件放置到一个二维的表 ...
- 006 Java并发编程wait、notify、notifyAll和Condition
原文https://www.cnblogs.com/dolphin0520/p/3920385.html#4182690 Java并发编程:线程间协作的两种方式:wait.notify.notifyA ...
- 12-6 NSArray
原文:http://rypress.com/tutorials/objective-c/data-types/nsarray NSArray NSArray 是 Objective-C中最常用的数组类 ...
- JS判断客户端是否是iOS或者Android手机移动端
var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > - ...