并不对劲的bzoj3994:loj2185:p3327[SDOI2015]约数个数和

题目大意

设d(x)为x的约数个数,\(t\)组询问,给定\(n,m\)(\(t,m,n\leq5*10^4\)),求$ \sum^n_{i=1}\sum^m_{j=1}d(i*j)$

题解

假设\(n\leq m\)
\(i=p_1^{a_1}*p_2^{a_2}*...*p_k^{a_k},j=p_1^{b_1}*p_2^{b_2}*...*p_k^{b_k}\)
对于\(i*j\)的某个约数\(x\),设\(x=p_1^{c_1}*p_2^{c_2}*...*p_k^{c_k}\),那么可以用两个数\(e,f\)表示\(x\),当\(c_q\leq a_q\)\(e\)\(p_q\)的指数为\(c_q\),当\(c_q> a_q\)\(f\)\(p_q\)的指数为\(c_q-a_q\)
这样每个\(x\)都能对应到一对\((e,f)\)上,每对满足\(e|i,f|j,gcd(e,f)=1\)\((e,f)\)也能对应到一个\(x\)
所以就有\(d(i,j)=\sum_{e|i}\sum_{f|j}[gcd(e,f)=1]\)
原式=$ \sum^n_{i=1}\sum^m_{j=1}\sum_{e|i}\sum_{f|j}[gcd(e,f)=1]$
把枚举\(e,f\)放到前面,得原式=\(\sum_{e=1}^{n}\sum_{f=1}^{m}\lfloor\frac{n}{e}\rfloor\lfloor\frac{m}{f}\rfloor[gcd(e,f)=1]\)
=\(\sum_{e=1}^{n}\sum_{f=1}^{m}\lfloor\frac{n}{e}\rfloor\lfloor\frac{m}{f}\rfloor\sum_{i|e,i|f}\mu(i)\)
=\(\sum_{i=1}^{n}\mu(i)\sum_{i|e}^{n}{\lfloor\frac{n}{e}\rfloor}\sum_{i|f}^{m}{\lfloor\frac{m}{f}\rfloor}\)
=\(\sum_{i=1}^{n}\mu(i)\sum_{e=1}^{\lfloor\frac{n}{i}\rfloor}{\lfloor\frac{n}{e*i}\rfloor}\sum_{f=1}^{\lfloor\frac{m}{i}\rfloor}{\lfloor\frac{m}{f*i}\rfloor}\)
\(g(x)=\sum_{i=1}^{x}{\lfloor\frac{x}{i}\rfloor}\),预处理\(g(x)\)
则原式=\(\sum_{i=1}^{n}{\mu(i)*g(n/i)*g(m/i)}\)
接下来整除分块就行了

代码
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<iomanip>
#include<iostream>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<vector>
#define rep(i,x,y) for(register int i=(x);i<=(y);++i)
#define dwn(i,x,y) for(register int i=(x);i>=(y);--i)
#define maxn 50010 
#define lim 50000
#define LL long long
using namespace std;
int read()
{int x=0,f=1;char ch=getchar();while(!isdigit(ch)&&ch!='-')ch=getchar();if(ch=='-')f=-1,ch=getchar();while(isdigit(ch))x=(x<<1)+(x<<3)+ch-'0',ch=getchar();return x*f;
}
void write(LL x)
{if(x==0){putchar('0'),putchar('\n');return;}int f=0;char ch[20];if(x<0)putchar('-'),x=-x;while(x)ch[++f]=x%10+'0',x/=10;while(f)putchar(ch[f--]);putchar('\n');return;
}
int n,m,t,p[maxn],no[maxn],cnt; 
LL f[maxn],g[maxn],mu[maxn];
int main()
{//freopen(".in","r",stdin);//freopen(".out","w",stdout);mu[1]=p[1]=no[1]=1;rep(i,2,lim){if(!no[i])p[++cnt]=i,mu[i]=-1;for(int j=1;j<=cnt&&i*p[j]<=lim;j++){no[i*p[j]]=1;if(i%p[j]==0){mu[i*p[j]]=0;break;}else mu[i*p[j]]=-mu[i];}}rep(i,1,lim)mu[i]+=mu[i-1];rep(i,1,lim){for(int l=1,r=0;l<=i;l=r+1){r=i/(i/l);f[i]+=(LL)(i/l)*(LL)(r-l+1);}}t=read();while(t--){n=read(),m=read();LL ans=0;if(n>m)swap(n,m);for(int l=1,r=0;l<=n;l=r+1){r=min(n/(n/l),m/(m/l));ans+=(mu[r]-mu[l-1])*f[n/l]*f[m/l];}write(ans);}return 0;
}

转载于:https://www.cnblogs.com/xzyf/p/10444842.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql redo原子写_InnoDB如何保证redolog的完整性?

redo log里记录的只是对数据库页面的更改&#xff0c;它记录着类似『更改页面x 的指定偏移量的数据为k』这样的信息&#xff0c;是完全二进制的log(数据库原理概念上的&#xff0c;不是指MySQL binlog&#xff0c;MySQL binlog不是二进制log)&#xff1b;在redo log里并没有存储…

ArcGIS 9.2 Server Pack 5 蓄势待发

ArcGIS 9.2补丁真是不少&#xff0c;快把开发人员给淹没了&#xff0c;之前版本的ArcGIS从来没有发布过sp4&#xff0c;现在已经通知马上要发布sp5&#xff0c;修正了大量desktop、engine、server上的bug&#xff0c;估计这应该是9.2最后一组补丁了&#xff0c;记得上次Jack来北…

jenkins maven没有使用全局设置文件地址_Jenkins手把手图文教程「基于Jenkins 2.164.1」...

一、下载前往https://jenkins.io/download/ &#xff0c;按需下载。如用于生产&#xff0c;建议下载Long-term Support (LTS) 版本&#xff0c;这样能够获得相对长期的维护&#xff1b;如想体验最新的功能&#xff0c;可尝试 Weekly 版本。可以直接下载特定系统专属的版本&…

游戏数值策划-经验值计算公式设计(自百度文库)

较复杂的概念源自于设计师对游戏整体的把握&#xff0c;例如我们在设计游戏中主角的成长经验值时&#xff0c;并不能随意给出个公式就了事&#xff0c;那是毫不负责任的。 经验计算的基础模型 我们通常说的成长所需经验公式大多是&#xff1a; 每级升级所需经验Lv^3*修正值修正…

[原创]flex 3 + .net开发flash Remoting一 --- 开发环境

flex 3 .net开发flash Remoting一 --- 开发环境 本篇文章将介绍flash Remoting 开发的必备的运行环境和相关配置过程&#xff1a;一。开发必备环境。 1. flex 3&#xff0c;请从Adobe官方网站下载或其它地方找D版(目前为止D版还没有出)。 2. Visual Studio 2005&#…

【转】winform回车变为tab

源地址&#xff1a;http://www.cnblogs.com/wohexiaocai/p/4302200.html转载于:https://www.cnblogs.com/haizine/p/10484454.html

接视频Java 数据库

http://pan.baidu.com/s/1mg1EYAO windows各种版本map.centerAndZoom(point,15);这句话可以指向地图的不同位置百度云http://developer.baidu.com/map/jsdemo.htm#i1_1?qq-pf-topcqq.c2c1 百度云粉丝 http://yun.baidu.com/share/home?uk1814500964&viewshare#categor…

Lachesis Shield 设计上的抉择

最近有很多朋友和同学跟我谈起 Lachesis Shield 设计上的一些问题。我想我需要总结一下我的设计策略&#xff0c;虽然这是个看起来简单得不能再简单的工具。我面临的选择&#xff1a;1 界面位置显然&#xff0c;有很多位置可以摆放这么个不起眼的东西&#xff0c;比如说&#x…

mysql表恢复报错binlog_mysqlbinlog 恢复报错ERROR at line 24826643: Unknown command '\'汗血宝马...

有两个binlog日志文件mysql-bin.000001,mysql-bin.000002&#xff0c;大小都是1G左右。现在要在另外一个库上做完全恢复。想到通常的恢复方法&#xff1a;mysqlbinlog /usr/local/var/mysql1/mysql-bin.000001 | mysql -uroot -S /usr/local/var/mysql2/mysql2.sockmysqlbinlog…

oracle数据库实验讲义-读书笔记(一)

1、激活锁定的用户alter user scott account unlock identified by tiger;2、使用内含脚本建立scott用户%oracle_home%\rdbms\admin\utlsampl.sql3、查看当前用户所有的表select * from tab;4、将屏幕显示输入到文本文件内spool D:1.txtselect * from emp;spool off spool D:1.…

linux分盘笔记

一磁盘分区 首先磁盘分区&#xff1a;计算机中存放信息的主要的存储设备就是硬盘&#xff0c;但是硬盘不能直接使用&#xff0c;必须对硬盘进行分割&#xff0c;分割成的一块一块的硬盘区域就是磁盘分区。在传统的磁盘管理中&#xff0c;将一个硬盘分为两大类分区&#xff1a;主…

sqlite mysql pgsql_比较MySQL,PostgreSQL和SQLite中的数据库列类型?(跨图)

小编典典我会做不同的事情清单&#xff1a;MySQL中的MEDIUMINT是一个奇怪的鸭子(3个字节)。我会避免它&#xff0c;但否则也将其映射到INTEGER。MySQLBOOLEAN(别名BOOL&#xff0c;别名TINYINT(1))与pg布尔类型不兼容。您可能无法移植应用程序&#xff0c;具体取决于它们用作布…

[导入]毕业的日子

出来快一年了&#xff0c;真有点怀念毕业前的那份时光。没有太多的事情可做&#xff0c;整天忙着以后的工作。来往与学校与市区两边。不停的学着新出来的技术&#xff0c;好像也有很多事情要做&#xff0c;想着自己以后会做什么&#xff0c;一点底也没有&#xff0c;虽然是学程…

python 析构函数_常用的python类的魔术方法

对于很少使用python编写大型代码的朋友可能会忘记python还是一种面向对象的语言。在其他面向对象的语言中有构造函数、析构函数等等在生命周期不同时机自动调用的函数&#xff0c;python当然也是有的。除此之外&#xff0c;python类还有很多神奇的编写方式让对象的表现更加丰富…

【linux基础】关于ARM板子使用O3编译选项优化

前言 应领导要求需要将最初级版本的算法移植到ARM板子上&#xff0c;并进行优化&#xff0c;以期达到实时。 平台 移植前&#xff1a; TX2 移植后&#xff1a; ARM() processor : 3 model name : ARMv7 Processor rev 10 (v7l) BogoMIPS : 7.54 Features : swp h…

微软桌面虚拟化vdi 安装测试体验

最近同事在讨论桌面虚拟化&#xff0c;说目前很多企业都准备上桌面虚拟化&#xff0c;结合众多的解决方案&#xff0c;觉得微软的桌面虚拟化方案不错&#xff0c;相对与citrix的xendesktop,vmware view 有一定的价格优势&#xff0c;心里想&#xff0c;微软是大公司&#xff0c…

ASP应用之模板采用

初学ASP&#xff0c;程序是能勉强写出来了&#xff0c;但若每进行一次网站页面的改版&#xff0c;所有的源程序都将进行一次移植手术。为此所耗费的人力精力不计其数&#xff0c;甚至一不小心得不偿失、前功尽弃。所以&#xff0c;梦想着那么大段的程序代码变成几个简单的字符代…

mysql 8.0.22_最新版MySQL 8.0.22下载安装超详细教程(Windows 64位)

前言前几天下载安装了最新版的MySQL 8.0.22&#xff0c;遇到了不少问题&#xff0c;参考了一些方法&#xff0c;最终得以解决。今天将自己的安装过程记录下来&#xff0c;希望对各位有所帮助。一、MySQL 8.0.22官网下载点击进入MySQL官网&#xff1a;https://www.mysql.com/① …

RedHat 脚本搭建dns服务!

1.配置好yum脚本 #!/bin/bash# by breaklinux echo "--------------- mount cdrom ------------------"umount /dev/cdrom &> /dev/nullmount /dev/cdrom /mnt &> /dev/nullecho "--------------- create yum ------------------"touch /etc…

国外开源.Net 系统概述

转载自&#xff1a;http://www.aspx1.com (ASP.NET学习门户) 搜索了几个搜索引擎&#xff0c;找了一些.net的开源系统&#xff0c;&#xff08;申明一下&#xff0c;下面的看只是个人看法&#xff0c;只供参考&#xff09;。 一、DotNetNuke DotNetNuke是一个.Net平台下&#x…