题目大意就是求∑ni=1∑mj=1lcm(i,j),但是有多组输入数据.
如果之前做过【莫比乌斯反演】[HYSBZ\BZOJ2154]Crash的数字表格,就会发现,对于每一个询问,有O(n)的做法,但显然不够快。
在上一道题中(sum的定义见【莫比乌斯反演】[HYSBZ\BZOJ2154]Crash的数字表格)。

ans=∑d=1min(n,m)d∑k=1min(m,n)μ(k)∗k2∗sum(⌊nkd⌋,⌊mkd⌋)

令D=kd,稍加变形可得

ans=∑D=1min(n,m)sum(⌊nD⌋,⌊mD⌋)∑i|dμ(i)∗i2∗Di

当我们对r∑i|dμ(i)∗i2∗Di在做筛法的同时求一个前缀和,很显然就可以用分块优化以O(n√)的时间回答每次询问。

#include<cstdio>
#include<algorithm>
using namespace std;
#define MAXN 10000000
#define MOD 100000009
#define Sum(x,y) ((1ll*x*(x+1)/2%MOD)*(1ll*y*(y+1)/2%MOD)%MOD)
bool f[MAXN+10];
int p[MAXN+10],mu[MAXN+10],sum[MAXN+10],pcnt,T,n,m,ans;
void prepare(){int i,j;mu[1]=sum[1]=1;for(i=2;i<=MAXN;i++){if(!f[i])p[++pcnt]=i,mu[i]=-1,sum[i]=(i*1*1+1ll*i*i*-1)%MOD;for(j=1;i*p[j]<=MAXN;j++){f[i*p[j]]=1;if(i%p[j]==0){mu[i*p[j]]=0;sum[i*p[j]]=(1ll*sum[i]*p[j])%MOD;break;}sum[i*p[j]]=((1ll*sum[i]*p[j]-1ll*sum[i]*p[j]%MOD*p[j])%MOD+MOD)%MOD;}sum[i]=(sum[i-1]+sum[i])%MOD;}
}
void Read(int &x){char c;while(c=getchar(),c!=EOF)if(c>='0'&&c<='9'){x=c-'0';while(c=getchar(),c>='0'&&c<='9')x=x*10+c-'0';ungetc(c,stdin);return;}
}
void solve(){int i,last,t=min(n,m);ans=0;for(i=1;i<=t;i=last+1){last=min(n/(n/i),m /(m /i));ans=((ans+(sum[last]-sum[i-1])*Sum(n/i,m /i)%MOD)%MOD+MOD)%MOD;}
}
int main()
{Read(T);prepare();while(T--){Read(n),Read(m);solve();printf("%d\n",ans);}
}

转载于:https://www.cnblogs.com/outerform/p/5921881.html

【莫比乌斯反演】[HYSBZ/BZOJ2693]jzptab相关推荐

  1. 【bzoj2693】jzptab 莫比乌斯反演+线性筛

    题目描述 输入 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M 输出 T行 每行一个整数 表示第i组数据的结果 样例输入 1 4 5 样例输出 122 题解 莫比乌斯反演+线性筛 由 ...

  2. HYSBZ - 1101——莫比乌斯反演

    [题目描述] HYSBZ - 1101 [题目分析] 昨天测试出了一道差不多的题目,我只能想到暴力,各种优化,最后都是运行了好久TLE,最后才知道要用到莫比乌斯反演,就想着今天研究一下,得出的结论就是 ...

  3. HYSBZ - 2818 Gcd —— 莫比乌斯反演

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 8172  Solved: 3609 Description 给定整数N,求1&l ...

  4. [复习]莫比乌斯反演,杜教筛,min_25筛

    [复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...

  5. 莫比乌斯函数+莫比乌斯反演

    几个经典的莫比乌斯反演练习题 先来一个莫比乌斯函数板子 1 int N = 10000000; 2 int not_prim[10000050],prim[10000050]; 3 long long ...

  6. bzoj2154(莫比乌斯反演)

    又是一道经典题. 1.学习了下O(n) 的做法. // // main.cpp // bzoj2154 // // Created by New_Life on 16/7/7. // Copyrigh ...

  7. BZOJ2154: Crash的数字表格 BZOJ2693: jzptab

    [传送门:BZOJ2154&BZOJ2693] 简要题意: 给出n,m,求$\sum_{i=1}^{n}\sum_{j=1}^{m}LCM(i,j)$ 题解: 莫比乌斯反演(因为BZOJ269 ...

  8. 良心发现,时隔一年再回首莫比乌斯反演(公式性质证明+题目练习)

    文章目录 莫比乌斯反演 引入 公式 性质 模板 公式证明 莫比乌斯函数前缀和 题目练习 完全平方数 [HAOI2011]Problemb YY的GCD [SDOI2014]数表 [国家集训队]Cras ...

  9. 莫比乌斯反演学习笔记

    背景: 之前不会用MarkdownMarkdownMarkdown,所以坑没有补. 定义: 以下除法默认向下去整. 对于一个形如Fn=∑d∣nfdF_n=\sum_{d|n}f_dFn​=∑d∣n​f ...

最新文章

  1. html5页面输出语句,使用html5输出文件
  2. 基于(Mixed)Integer Programming方法的服务组合相关论文实验介绍 (1)
  3. 【ThinkPHP3.2.3】学习ThinkPHP笔记:框架中的配置文件(3)
  4. kernel 3.10内核源码分析--中断--中断和异常返回流程
  5. BZOJ 3991: [SDOI2015]寻宝游戏
  6. redis最基础的入门教程
  7. 列出历史命令_Linux 下如何使用 fc 命令
  8. js 取闭合标签正则_js正则表达式解析html标签中的内容
  9. 准确度判断 语义分割_【语义分割】DeepLab v1/v2
  10. php 把java list对象转成数组,java_JSON的String字符串与Java的List列表对象的相互转换,在前端: 1.如果json是List对象 - phpStudy...
  11. Boot Hill 布特山
  12. day①:py流程控制
  13. tolua unity 报错_Unity3D热更新之LuaFramework篇[01]--从零开始
  14. Layui 中引入Echarts模块
  15. 《Java程序员面试宝典(第4版)》试读感想
  16. kaggle--猫狗数据集分类
  17. html5在线拍照 源码,html5拍照功能实现代码(htm5上传文件)
  18. 利用向量求点到线的最短距离
  19. Tasking编译器开发TC275(Tricore)中使用自定义段
  20. 典型相关分析python实现_多视图学习利器----CCA(典型相关分析)及MATLAB实现

热门文章

  1. 响应服务器auth first,asp.net mvc发送QQ邮件提示 命令顺序不正确。 服务器响应为: Error: need EHLO and AUTH first !...
  2. 存储如何做远程服务器数据备份_如何选择存储用的服务器?
  3. java 管理系统 注释_员工管理系统--带注释--oracle系统--java项目
  4. Thymeleaf $/*/#/@语法
  5. windows上telnet用法 测试端口号
  6. vscode上传GitHub
  7. 博弈-巴什博弈-P/N图
  8. excel换行按什么键_电脑黑屏按什么键恢复 电脑黑屏的原因和恢复方法
  9. LuaForUnity1:Lua介绍与使用
  10. Unity3D基础37:Input控制面板