LG P3653 小清新数学题
\(\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 小清新数学题的更多相关文章
- Miller Rabin 详解 && 小清新数学题题解
在做这道题之前,我们首先来尝试签到题. 签到题 我们定义一个函数:\(qiandao(x)\) 为小于等于 x 的数中与 x 不互质的数的个数.要求 \(\sum\limits _{i=l}^r qi ...
- 三石推荐!把 Bootstrap 小清新带回家!
无敌传送门:http://fineui.com/demo_pro/default.aspx?theme=bootstrap1&menu=accordion 喜欢就来赞一个! 把麻烦留给三石 ...
- 小清新的jQuery ck-slide 图片轮播
ck_slide 是一款小清新的jQuery 幻灯片插件,它非常小巧,压缩后仅 3KB,基本功能可以满足.它支持淡入淡出/左右滚动.箭头/圆点控制.自动播放. 在线实例 默认(淡入淡出) 左右滚动 自 ...
- easyui小清新俺也晒晒 视频管理软件bs项目
easyui小清新俺也晒晒 视频管理软件bs项目 针对设备的管理软件 这是我听到最多的话.视频管理软件bs项目.easyui 好与坏我不去评价 项目做了好几个月,其实代码看来也没用多少,但是做需求,时 ...
- Photoshop调出外景婚片蓝色小清新艺术效果
春季婚纱旺季来了,好多童鞋给我抱怨说客片太难转色了,春天的小清新感都转不了,其实并不难,运用好互补色来进行加减色,能很快调整好照片的偏色,互补色也可称为对比色,后期调色的加也可称为减,如加蓝=减黄.加 ...
- LuoguP3674 小清新人渣的本愿 && BZOJ4810: [Ynoi2017]由乃的玉米田
题目地址 小清新人渣的本愿 [Ynoi2017]由乃的玉米田 所以这两题也就输出不一样而已 题解 这种lxl的题还是没修改操作的题基本就是莫队 分开考虑每个询问 1.减法 \(a-b=x⇒a=b+x\ ...
- P3674 小清新人渣的本愿
P3674 小清新人渣的本愿 一道妙不可言的题啊,,, 一看就知道是个莫队 考虑求答案 1号操作就是个大bitset,动态维护当前的bitset \(S\),把能取哪些值都搞出来,只要\(S\ and ...
- 【Luogu3676】小清新数据结构题(动态点分治)
[Luogu3676]小清新数据结构题(动态点分治) 题面 洛谷 题解 先扯远点,这题我第一次看的时候觉得是一个树链剖分+线段树维护. 做法大概是这样: 我们先以任意一个点为根,把当前点看成是一棵有根 ...
- 【洛谷3674】小清新人渣的本愿(莫队,bitset)
[洛谷3674]小清新人渣的本愿(莫队,bitset) 题面 洛谷,自己去看去,太长了 题解 很显然的莫队. 但是怎么查询那几个询问. 对于询问乘积,显然可以暴力枚举因数(反正加起来也是\(O(n\s ...
- 用RecyclerView做一个小清新的Gallery效果
一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...
随机推荐
- uni 结合vuex 编写动态全局配置变量 this.baseurl
在日常开发过程,相信大家有遇到过各种需求,而我,在这段事件便遇到了一个,需要通过用户界面配置动态接口,同时,因为是app小程序开发,所以接口中涉及到了http以及websocket两个类型的接口. 同 ...
- C++编程笔记(智能指针学习)
目录 scoped_ptr unique_ptr shared_ptr 智能指针简单应用 智能指针简单应用 scoped_ptr 拷贝构造和 =赋值操作均为私有,不允许 内部重载了解引用(*)操作符和 ...
- 使用python脚本传递参数:(三种方式可收藏)
背景:使用python脚本传递参数在实际工作过程中还是比较常用,以下提供了好几种的实现方式: 一.使用sys.argv的数组传入说明:使用sys.argv必须按照先后的顺序传入对应的参数:sys.ar ...
- Backbone 网络-ResNet v2 详解
目录 目录 目录 前言 摘要 1.介绍 2.深度残差网络的分析 3.On the Importance of Identity Skip Connection 4.On the Usage of Ac ...
- Hadoop如何保证自己的江湖地位?Yarn功不可没
前言 任何计算任务的运行都离不开计算资源,比如CPU.内存等,那么如何对于计算资源的管理调度就成为了一个重点.大数据领域中的Hadoop之所以一家独大,深受市场的欢迎,和他们设计了一个通用的资源管理调 ...
- CTFshow——funnyrsa2
题目如下: 题目分析: 发现n很小,可以考虑yafu分解n,或者使用在线网站,例如:http://factordb.com/.即得p,q,r.因为常规rsa只有p和q,则phi = (p -1) * ...
- 使用nodejs编写api接口并部署到服务器上
一.用node.js编写api接口 1.安装node环境,没有就去下载nodejs, 下载地址 2.创建一个node项目, 新建一个目录文件,例node_proxy 3.在新建的node项目执行npm ...
- AVM 拖动组件 movable-view 介绍
应用开发中拖动功能是比较常见的 ,如滑动解锁,滑动验证码,实现一些小游戏,少儿编程中常见. avm.js 是多端开发框架,一套代码可同时编译为APP .小程序.h5. avm 框架中实现拖动功能非常简 ...
- 再聊一下那 SQLSERVER 行不能跨页的事
一:背景 1. 讲故事 上一篇写完了之后,马上就有朋友留言对记录行的 8060byte 限制的疑惑,因为他的表记录存储了大量的文章,存储文章的字段类型用的是 nvarchar(max),长度很显然是超 ...
- 【深入浅出 Yarn 架构与实现】4-4 RM 管理 Application
在 YARN 中,Application 是指应用程序,它可能启动多个运行实例,每个运行实例由 -个 ApplicationMaster 与一组该 ApplicationMaster 启动的任务组成, ...