BZOJ 1101 [POI2007]Zap(莫比乌斯反演)-程序员宅基地

技术标签: php  数据结构与算法  

 

【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1101

 

【题目大意】

  求[1,n][1,m]内gcd=k的情况

 

【题解】

  考虑求[1,n][1,m]里gcd=k

  等价于[1,n/k][1,m/k]里gcd=1

  考虑求[1,n][1,m]里gcd=1

  结果为sum(miu[d]*(n/d)*(m/d))

  预处理O(n^1.5)

  由于n/d只有sqrt(n)种取值,所以可以预处理出miu[]的前缀和 询问时分段求和

 

【代码】

#include <cstdio>
#include <algorithm>
const int N=50010;
using namespace std;
typedef long long ll;
int T,a,b,c,d,k;
int tot,p[N],miu[N],sum[N],v[N];
void mobius(int n){
    int i,j;
    for(miu[1]=1,i=2;i<=n;i++){
        if(!v[i])p[tot++]=i,miu[i]=-1;
        for(j=0;j<tot&&i*p[j]<=n;j++){
            v[i*p[j]]=1;
            if(i%p[j])miu[i*p[j]]=-miu[i];else break;
        }
    }for(i=1;i<=n;i++)sum[i]=sum[i-1]+miu[i];
}
ll cal(int n,int m){
    ll t=0;
    if(n>m)swap(n,m);
    for(int i=1,j=0;i<=n;i=j+1)
    j=min(n/(n/i),m/(m/i)),t+=(ll)(sum[j]-sum[i-1])*(n/i)*(m/i);
    return t;
}
int main(){
    mobius(50000);
    scanf("%d",&T);
    while(T--){
        scanf("%d%d%d",&a,&b,&k);
        printf("%lld\n",cal(a/k,b/k));
    }return 0;
}

  

转载于:https://www.cnblogs.com/forever97/p/bzoj1101.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30553777/article/details/96980447

智能推荐

400万全行业动态事理图谱Demo发布_图谱 历史经验库-程序员宅基地

文章浏览阅读1.1k次,点赞3次,收藏10次。历史经验知识在未来预测的应用 华尔街的独角兽Kensho,是智能金融Fintech的一个不得不提的成功案例,这个由高盛领投的6280万美元投资,总融资高达7280万美元的公司自推出后便名声大噪。Warren是kensho是一个代表产品,用户能够以通俗易懂的英文来询问Warren金融问题,例如“当三级飓风袭击佛罗里达州时,哪支股票上涨得最快?”在回答这个问题的时候,它会在后台强大的全球历史事..._图谱 历史经验库

CPU实模式和保护模式、全局描述符表GDT、Linux内核中GDT和IDT的结构定义_linuxgdt-程序员宅基地

文章浏览阅读902次。一 计算机实模式和保护模式实模式在实模式下,内存被限制为仅有1M字节(220 字节)。有效的地址从00000到FFFFF (十六进制)。这些地址需要用20位的数来表示。一个20位的数不适合任何一个8086的16位寄存器。Intel通过利用两个16位数值来决定一个地址的方法来解决这个问题。开始的16位值称为段地址(selector)。段地址的值必须存储在段寄存器中。第二个16位值称为偏移地址(offset)。16位保护模式在实模式下,一个段地址的值是物理内存里的一节的首地址。在保护模式._linuxgdt

JDBC 连接 MySQL_jdbc连接mysql-程序员宅基地

文章浏览阅读7.9w次,点赞223次,收藏1.3k次。JDBC 是 Java DataBase Connectivity (Java 数据连接)技术的简称,是一种可用于执行SQL 语句的 Java API。它由一些 java 语言编写的类和接口组成;程序员通过使用 jdbc 可以方便地将 SQL 语句传送给几乎任何一种数据库。......_jdbc连接mysql

MapReduce二次排序(secondary sort)实战_mapreduce 自定义二次排序-程序员宅基地

文章浏览阅读2.2k次。接触过mapreduce的同学都知道,为了将key值相同的record放在一起,分配给指定reducer,shuffle阶段会按照key值排序。然而在某些情况下,我们需要同时对value排序,A同学立马提出了如下解决方案:reduce的时候,将同一个key的所有value都存在一个list中,最后再进行排序,这个方案在数据量小时没有问题,可是reducer的内存是有限的,当数据规模很大时,_mapreduce 自定义二次排序

matplotlib画图自定义marker_plt不同的marker-程序员宅基地

文章浏览阅读5.6k次,点赞5次,收藏12次。文章目录matplotlib画图自定义marker新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入matplo..._plt不同的marker

jdk1.8版本切换至1.6遇到的问题&分析_jdk1.8切换1.6-程序员宅基地

文章浏览阅读1.9w次,点赞9次,收藏49次。背景由于工作原因,我的电脑上目前安装了jdk1.6和jdk1.8 两个版本,并且都是安装版本。 之前因为一些原因(苏宁对接sdk,阿里开发规约)本地默认安装的是jdk.18版本, 但是公司的大部分项目都是用jdk1.6编译,所以后来我本地的默认版本采用了1.6,切换至1.6后,发现阿里Java编码插件无效,经查阅文档得知,阿里Java规划的jdk版本至少是1.8。参考:http://..._jdk1.8切换1.6

随便推点

高版本Andriod Studio集成HMS环境看这篇就够了(附加步骤多图、资源下载、源代码、问题总结)_android studio 版本几可以装hms-程序员宅基地

文章浏览阅读5.2k次,点赞8次,收藏15次。Aandriod Studio配置HMS服务0.前言1.开发环境介绍a) Java版本b) Android Studio版本c) Gradle SDK版本2.注册认证华为开发者联盟(个人开发者)a) 进入网址,点击右上角管理中心b) 注册/登录账号c) 实名认证开发者d)3.新建Android Studio项目0.前言1.开发环境介绍a) Java版本博主基于华为开发者学堂1+X初级开发课程由于博主版本与教程中所用不一致因此遇到许多配置语法上的不一致问题其他与博主开发环境有区别的朋友们,仅_android studio 版本几可以装hms

WebRTC QoS方法(汇总篇)-程序员宅基地

文章浏览阅读1.8w次,点赞44次,收藏108次。目前总结出webrtc用于提升QOS的方法有:NACK、FEC、SVC、JitterBuffer、IDR Request、PACER、Sender Side BWE、VFR(动态帧率调整策略)。这几种方法在webrtc架构分布如下:具体实现原理如下:一、NACK与NACK对应的是ACK,ACK是到达通知技术。以TCP为例,他可靠因为接收方在收到数据后会给发送方返回一个“已收......_webrtc qos

OS之宏内核(Monolithic kernel)和微内核(Microkernel)详解_微内核和宏内核-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏4次。内核介绍Microkernel:在Microkernel中,大多数内核以特权状态作为独立的进程运行,它们通过消息传递进行通信。在这些设计中,Microkernel部分通常只是一个消息转发站:当系统调用模块想要向文件系统模块发送消息时,该消息直接通过内核[1]转发。这种方法有助于实现模块之间的隔离。在一些微内核设计中,更多的功能(如I/O)也封装在内核中。但最基本的想法是保持Microkernel尽可能小,这样整个内核只能通过移植Microkernel本身移植到一个新的平台上。所有其他模块只依赖于Micr_微内核和宏内核

SQL injection(SQL 注入攻击) 原理浅析_what are three methods to attempt sql injection-程序员宅基地

文章浏览阅读571次。1.database 数据库A database is an organized collection of data. The data is typically organized to model aspects of reality in a way that supports processes requiring information.数据库,简单来说可视为电子化的文件柜——_what are three methods to attempt sql injection

Android CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage-程序员宅基地

文章浏览阅读1.4k次。场景:原来的电脑可以编译,后来换了一台电脑导入的时候报错,后来经过分析,我原来电脑用的ndk是16版本可以正常运行,新电脑装的as里面的ndk自动升级到了17版本。如图解决方法:1.如果你的版本比较低可以尝试升级,不用进行下面操作,如果不行尝试如下操作 2.在网上下载一个你可以跑起来的版本并解压缩。(因为我的ndk版本是17最新版本无法升级,并且我原来16的版本是可以跑..._cmake error: cmake_c_compiler not set, after enablelanguage

iTunes Connect 如何删除应用App_connect如何将没提交的应用删除-程序员宅基地

文章浏览阅读2.2w次。1、iTunes Connect 如何删除未提交状态应用的APP没有上架过的app是不能删除的 2、iTunes Connect 如何删除提交状态应用的APP如果上架了,要先在rights and pricing中的 specific stores中,把所有的区域都去掉(不在任何区域销售),在『APP信息』中就有删除按钮了。_connect如何将没提交的应用删除