\(\text{Poblem}\)

求 \(\sum_{i=l}^r \mu(i)\)

\(1 \le l,r \le 10^{18}, r - l \le 10^5\)

\(\text{Analysis}\)

我们做过 \(r,l \le 10^{12}\) 次方的区间筛积性函数

但这是因为 \(\sqrt r\) 内的素数可以快速筛出来

又可以用这些素数处理 \(r \le 10^{12}\) 的数的积性函数

但现在 \(\sqrt r\) 已经达到 \(10^9\) 级别了

\(so...\)

我们仍然用 \(10^6\) 以内的素数处理,并将原来的数除掉这些素数

那么剩下的数 \(x\) 只有三种形式

\(3.x=p^2\)

\(2.x=p\)

\(1.x=pq\)

\(p,q \in \mathbb P,p \not = q\)

考虑第一种情况,只需要判断 \(\sqrt x\) 强转整型后再平方是否等于 \(x\)

考虑第二种情况,由于 \(x\) 可能非常大,那么就需要 \(\text{Miller Rabin}\) 来判断素数

考虑第三种情况,两个不等的素数,\(\mu\) 不变,且判完前两个情况只剩这种情况,不必再考虑

愉快解决

\(\text{Code}\)

#include<cstdio>
#include<algorithm>
#include<ctime>
#include<cmath>
using namespace std;
typedef long long LL; const int R = 100005;
LL l, r, num[R];
int prime[600005], totp, mu[R], vis[1000005]; inline LL sqr(LL x){return x * x;} inline void getprime()
{
for(int i = 2; i <= 1e6; i++)
{
if (!vis[i]) prime[++totp] = i;
for(int j = 1; j <= totp && i * prime[j] <= 1e6; j++)
{
vis[i * prime[j]] = 1;
if (i % prime[j] == 0) break;
}
}
} inline LL fmul(LL x, LL y, LL p)
{
return (x * y - (LL)((long double)x / p * y) * p + p) % p;
}
inline LL fpow(LL x, LL y, LL p)
{
LL res = 1;
for(; y; y >>= 1)
{
if (y & 1) res = fmul(res, x, p);
x = fmul(x, x, p);
}
return res;
}
inline int Miller_Rabin(LL p)
{
srand(time(0));
if (p <= 3) return (p == 2 || p == 3);
if (!(p & 1)) return 0;
LL d = p - 1, b = 0;
while (!(d & 1)) d >>= 1, b++;
for(int i = 0; i < 3; i++)
{
LL a = rand() % (p - 3) + 2, u = fpow(a, d, p), v;
for(int j = 0; j < b; j++)
{
v = fmul(u, u, p);
if ((v == 1) && (u != 1) && (u != p - 1)) return 0;
u = v;
}
if (u != 1) return 0;
}
return 1;
} inline LL solve()
{
for(int i = 1; i <= r - l + 1; i++) mu[i] = 1, num[i] = l + i - 1;
for(int i = 1; i <= totp && prime[i] <= r; i++)
for(LL j = max(1LL, l / prime[i]); j * prime[i] <= r; j++)
if (j * prime[i] >= l)
{
if (j % prime[i] == 0) mu[j * prime[i] - l + 1] = 0;
else mu[j * prime[i] - l + 1] *= -1, num[j * prime[i] - l + 1] /= prime[i];
}
for(int i = 1; i <= r - l + 1; i++)
{
if (!mu[i] || num[i] == 1) continue;
if (sqr(sqrt(num[i])) == num[i]) mu[i] = 0;
else if (Miller_Rabin(num[i])) mu[i] *= -1;
}
LL ans = 0;
for(int i = 1; i <= r - l + 1; i++) ans += mu[i];
return ans;
} int main()
{
scanf("%lld%lld", &l, &r);
getprime();
printf("%lld\n", solve());
}

LG P3653 小清新数学题的更多相关文章

  1. Miller Rabin 详解 && 小清新数学题题解

    在做这道题之前,我们首先来尝试签到题. 签到题 我们定义一个函数:\(qiandao(x)\) 为小于等于 x 的数中与 x 不互质的数的个数.要求 \(\sum\limits _{i=l}^r qi ...

  2. 三石推荐!把 Bootstrap 小清新带回家!

    无敌传送门:http://fineui.com/demo_pro/default.aspx?theme=bootstrap1&menu=accordion   喜欢就来赞一个! 把麻烦留给三石 ...

  3. 小清新的jQuery ck-slide 图片轮播

    ck_slide 是一款小清新的jQuery 幻灯片插件,它非常小巧,压缩后仅 3KB,基本功能可以满足.它支持淡入淡出/左右滚动.箭头/圆点控制.自动播放. 在线实例 默认(淡入淡出) 左右滚动 自 ...

  4. easyui小清新俺也晒晒 视频管理软件bs项目

    easyui小清新俺也晒晒 视频管理软件bs项目 针对设备的管理软件 这是我听到最多的话.视频管理软件bs项目.easyui 好与坏我不去评价 项目做了好几个月,其实代码看来也没用多少,但是做需求,时 ...

  5. Photoshop调出外景婚片蓝色小清新艺术效果

    春季婚纱旺季来了,好多童鞋给我抱怨说客片太难转色了,春天的小清新感都转不了,其实并不难,运用好互补色来进行加减色,能很快调整好照片的偏色,互补色也可称为对比色,后期调色的加也可称为减,如加蓝=减黄.加 ...

  6. LuoguP3674 小清新人渣的本愿 && BZOJ4810: [Ynoi2017]由乃的玉米田

    题目地址 小清新人渣的本愿 [Ynoi2017]由乃的玉米田 所以这两题也就输出不一样而已 题解 这种lxl的题还是没修改操作的题基本就是莫队 分开考虑每个询问 1.减法 \(a-b=x⇒a=b+x\ ...

  7. P3674 小清新人渣的本愿

    P3674 小清新人渣的本愿 一道妙不可言的题啊,,, 一看就知道是个莫队 考虑求答案 1号操作就是个大bitset,动态维护当前的bitset \(S\),把能取哪些值都搞出来,只要\(S\ and ...

  8. 【Luogu3676】小清新数据结构题(动态点分治)

    [Luogu3676]小清新数据结构题(动态点分治) 题面 洛谷 题解 先扯远点,这题我第一次看的时候觉得是一个树链剖分+线段树维护. 做法大概是这样: 我们先以任意一个点为根,把当前点看成是一棵有根 ...

  9. 【洛谷3674】小清新人渣的本愿(莫队,bitset)

    [洛谷3674]小清新人渣的本愿(莫队,bitset) 题面 洛谷,自己去看去,太长了 题解 很显然的莫队. 但是怎么查询那几个询问. 对于询问乘积,显然可以暴力枚举因数(反正加起来也是\(O(n\s ...

  10. 用RecyclerView做一个小清新的Gallery效果

    一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...

随机推荐

  1. 树莓派蓝牙rfcomm协议通信

    修改配置文件 手机使用 "蓝牙串口" 软件,树莓派上修改文件/etc/systemd/system/dbus-org.bluez.service ExecStart=/usr/li ...

  2. springMVC环境的搭建(一)

    概要: MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MV ...

  3. 使用Python实现多线程、多进程、异步IO的socket通信

    多线程实现socket通信服务器端代码 import socket import threading class MyServer(object): def __init__(self): # 初始化 ...

  4. 「笔记」某移动SRE运维体系交流

    痛点 传统竖井式IT架构(封闭.隔离.非标.难运维) X86 服务器硬件稳定性不足 开源软件可靠性不足,且不可控 出了故障,被动救火救不完 转型 由此催生了转型升级的需求: 运维智能(SRE)的转型 ...

  5. Go语言性能剖析利器--pprof实战

    作者:耿宗杰 前言 关于pprof的文章在网上已是汗牛充栋,却是千篇一律的命令介绍,鲜有真正实操的,本文将参考Go社区资料,结合自己的经验,实战Go程序的性能分析与优化过程. 优化思路 首先说一下性能 ...

  6. 【深入浅出Spring原理及实战】「源码原理实战」从底层角度去分析研究PropertySourcesPlaceholderConfigurer的原理及实战注入机制

    Spring提供配置解析功能 主要有一下xml文件占位符解析和Java的属性@Value的占位符解析配置这两种场景进行分析和实现解析,如下面两种案例. xml文件的占位符解析配置 <bean i ...

  7. .NET周报【12月第2期 2022-12-15】

    国内文章 九哥聊Kestrel网络编程第一章:开发一个Redis服务器 https://mp.weixin.qq.com/s/HJYnBE-7wbvkAYHxQaq3eQ 我和拥有多个.NET 千星开 ...

  8. css样式实现平行四边形

    强大的css样式实现平行四边形: 啥也不说了,直接上代码 <!DOCTYPE html> <html lang="en"> <head> < ...

  9. 【转载】SQL SERVER2008 修改数据库名相关的脚本

    -- 修改数据库名 -- 1.首先查找数据库是否占用,杀掉占用的id select spid from master.dbo.sysprocesses where dbid=db_id('ClothC ...

  10. 痞子衡嵌入式:探讨i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题. 前段时间有客户在官方社区反映 i.MXRT1170 下 ...