题目描述

输入

一个正整数T表示数据组数

接下来T行 每行两个正整数 表示N、M

输出

T行 每行一个整数 表示第i组数据的结果

样例输入

1
4 5

样例输出

122


题解

莫比乌斯反演+线性筛

由于要处理多组询问,所以 bzoj2154 的做法就不好用了,但是这个结论可以套用过来。

然后推公式:

(UPD:上面公式最后一行请自行把 $k$ 改成 $n$ ... 由于这里是图片形式就不改了)

设f1(n)=n2mu(n),f2(n)=n,则显然f2是积性函数,f1为两个积性函数的乘积,也是积性函数。

那么f为f1和f2的狄利克雷卷积,也是积性函数。

所以可以尝试快筛f(n)。

当n为质数时,显然f(n)=n-n^2。

当n不为质数时,即n=i*p,p|i,p是质数,那么观察f(n)化简之后的式子,n新增加出来的约数一定是包含p^2的,它的mu值一定是0,所以f(n)的改变只是从i*...变为了n*...,所以此时f(n)=f(i)*p。

这样我们就可以快筛出f函数及其前缀和,然后对于每个询问分块求解即可。

#include <cstdio>
#include <algorithm>
#define mod 100000009
using namespace std;
const int n = 10000000;
typedef long long ll;
int prime[n + 10] , tot;
ll g[n + 10] , sum[n + 10];
bool np[n + 10];
ll s(int x)
{return (ll)x * (x + 1) / 2 % mod;
}
ll cal(ll a , ll b)
{int i , last;ll ans = 0;for(i = 1 ; i <= a && i <= b ; i = last + 1) last = min(a / (a / i) , b / (b / i)) , ans = (ans + (sum[last] - sum[i - 1] + mod) % mod * s(a / i) % mod * s(b / i) % mod) % mod;return ans;
}
int main()
{int i , j , T , a , b;g[1] = sum[1] = 1;for(i = 2 ; i <= n ; i ++ ){if(!np[i]) g[i] = ((i - (ll)i * i) % mod + mod) % mod , prime[++tot] = i;for(j = 1 ; j <= tot && i * prime[j] <= n ; j ++ ){np[i * prime[j]] = 1;if(i % prime[j] == 0){g[i * prime[j]] = g[i] * prime[j] % mod;break;}else g[i * prime[j]] = g[i] * g[prime[j]] % mod;}sum[i] = (sum[i - 1] + g[i]) % mod;}scanf("%d" , &T);while(T -- ) scanf("%d%d" , &a , &b) , printf("%lld\n" , cal(a , b));return 0;
}

转载于:https://www.cnblogs.com/GXZlegend/p/7000042.html

【bzoj2693】jzptab 莫比乌斯反演+线性筛相关推荐

  1. 【bzoj2694】Lcm 莫比乌斯反演+线性筛

    题目描述 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^m|\mu(gcd(i,j))|lcm(i,j)$,即$gcd(i,j)$不存在平方因子的$lcm(i,j)$之 ...

  2. BZOJ3309 DZY Loves Math(莫比乌斯反演+线性筛)

    一通正常的莫比乌斯反演后,我们只需要求出g(n)=Σf(d)*μ(n/d)的前缀和就好了. 考虑怎么求g(n).当然是打表啊.设n=∏piai,n/d=∏pibi .显然若存在bi>1则这个d没 ...

  3. bzoj4407 于神之怒加强版(莫比乌斯反演+线性筛)

    4407: 于神之怒加强版 Time Limit: 80 Sec  Memory Limit: 512 MB Submit: 355  Solved: 174 [Submit][Status][Dis ...

  4. 【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛

    Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b, ...

  5. bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛

    Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...

  6. Bzoj3309-DZY Loves Math【莫比乌斯反演,线性筛】

    正题 bzoj没了,在darkbzoj交吧 题目链接:https://darkbzoj.tk/problem/3309 题目大意 定义f(x)f(x)f(x)表示xxx所有质因数中最大的指数幂. 求∑ ...

  7. 南昌邀请赛网络赛 G. tsy's number(莫比乌斯反演+线性筛)

    题目链接: tsy's number 题意: 求    (mod ) 思路: 原式 =  设   设  原式 =  设T = id ,将 i 的求和变为 T 的求和: 原式 =   :这个是 与  的 ...

  8. 洛谷P2257 YY的GCD 莫比乌斯函数反演+线性筛

    洛谷P2257 YY的GCD 标签 莫比乌斯反演 线性筛 前言 这题貌似和莫反没多大关系,就是用到了一个莫比乌斯函数的性质了,其他就是推公式,优化和式. 我的第一道懵逼反演-真的好难好难-而且套路特别 ...

  9. 【专题】莫比乌斯反演

    问题引入: 给定整数 N 和 M.求满足  且  为质数的点对  的个数. 数据范围: 接下来会见到以下内容: 莫比乌斯函数 莫比乌斯函数的线性筛 迪利克雷卷积介绍 莫比乌斯反演 整除分块 杜教筛介绍 ...

最新文章

  1. Python装饰器与面向切面编程
  2. 2013\National _C_C++_A\1.填算式
  3. 网上商城首页实现总结(一)
  4. C#------如何判断输入的是否为纯数字
  5. Java接口程序练习
  6. Asp.Net MVC5入门学习系列⑥
  7. it资产管理系统php,开源IT资产管理软件(GIPI)
  8. Linux用scp实现无密码传输文件和目录(使用密钥)
  9. java计算机毕业设计网上书店管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  10. 网络计算机信号属于什么信号,数字信号
  11. 临平职高计算机分数线,权威发布!余杭区2017年各类高中招生第一批次录取分数线划定!...
  12. 他称向导师下跪,仍被强制退学,5年博士白读,双方各执一词,同门师兄也有回应!...
  13. 刘帅嵌入式系统-ORR逻辑或操作指令
  14. 黄牛用高性能服务器抢票,还在找黄牛“加速”抢票?成功抢票旅客:黄牛让我去12306候补...
  15. 记事本软件n++_配置记事本++以运行C,C ++和Java程序
  16. powershell下使用linux命令,Win10系统下使用Windows PowerShell运行ABD命令的方法
  17. python可视化库matplotlib_Python可视化库matplotlib(基础整理)
  18. 1983—2001世嘉主机发展历程
  19. 就“敏捷软件开发(第二版)”书评答译者
  20. 什么是云平台_BIMer,你知道什么是BIM云平台吗?

热门文章

  1. (5) ebj学习:ejb用jpa操作数据库1
  2. myeclipse10.1破解方法
  3. 系统分析之100亿级日志系统是怎么设计出来的?
  4. mysql中的get_lock锁机制解析
  5. 11个步骤完美排查Linux机器是否已经被入侵
  6. 基础练习 字母图形 c语言
  7. Python面向对象、魔法方法
  8. python打包的exe开机自动启动(windows)
  9. 8大排序算法图文讲解
  10. Android中的消息机制:Handler消息传递机制