冷僻模板整理

news/2025/10/4 19:34:08/文章来源:https://www.cnblogs.com/wiene/p/19125835

min25筛

可以低于线性的解决1到N中的质数的k次幂的求和的问题,并且在处理了N之后对于1到N中数论分块所需的点x(l,r)都可以通过val=g[ID(x)]以O(1)的代价获取到
如果不需要多次查询,建议把命名空间外的定义放到min25命名空间里面

#define LL long long
#define ll long long
const int N = 1000000 + 10;
int prime[N], id1[N], id2[N], flag[N], ncnt, m;
LL g[N], sum[N], a[N], T;
LL n;
LL mod;
namespace min25{inline LL ps(LL n,LL k) {LL r=1;for(;k;k>>=1){if(k&1)r=r*n%mod;n=n*n%mod;}return 
r;}void finit(){ // 最开始清0memset(g, 0, sizeof(g));memset(a, 0, sizeof(a));memset(sum, 0, sizeof(sum));memset(prime, 0, sizeof(prime));memset(id1, 0, sizeof(id1));memset(id2, 0, sizeof(id2));memset(flag, 0, sizeof(flag));ncnt = m = 0;        }int ID(LL x) {return x <= T ? id1[x] : id2[n / x];}LL calc(LL x) {return x - 1;//质数次数和 //return x * (x + 1) / 2 - 1;//质数一次和 //return x * (x + 1) * (2 * x + 1) / 6 - 1;}void init(LL x) {T = sqrt(x + 0.5);for (int i = 2; i <= T; i++) {if (!flag[i]) prime[++ncnt] = i, sum[ncnt] = sum[ncnt - 1] + 1;//次数和 //if (!flag[i]) prime[++ncnt] = i, sum[ncnt] = sum[ncnt - 1] + i; //一次和 //if (!flag[i]) prime[++ncnt] = i, sum[ncnt] = sum[ncnt - 1] + (LL)prime[i] * prime[i];  // 修改3:记录质数平方和for (int j = 1; j <= ncnt && i * prime[j] <= T; j++) {flag[i * prime[j]] = 1;if (i % prime[j] == 0) break;}}for (LL l = 1; l <= x; l = x / (x / l) + 1) {a[++m] = x / l;if (a[m] <= T) id1[a[m]] = m; else id2[x / a[m]] = m;g[m] = calc(a[m]);}for (int i = 1; i <= ncnt; i++)for (int j = 1; j <= m && (LL) prime[i] * prime[i] <= a[j]; j++)g[j] = g[j] - (g[ID(a[j] / prime[i])] - sum[i - 1]);//次数和 //g[j] = g[j] - (LL) prime[i] * (g[ID(a[j] / prime[i])] - sum[i - 1]);//一次和 // g[j] = g[j] - (LL) prime[i] * prime[i] * (g[ID(a[j] / prime[i])] - sum[i - 1]);//平方和 }LL solve(LL x) {if (x <= 1) return 0ll;//修改的时候注意这里要微调一下 return n = x, init(n), g[ID(n)];}}using namespace min25;
ll count(ll n){ll l=1,r=1e9,sqn=1,tmp;ll mid=(l+r)/2;while(l<=r){mid=(l+r)/2;tmp=mid*mid;if(tmp<=n){sqn=mid;l=mid+1;}else r=mid-1;}finit();solve(sqn);ll ans=0,tl=0,tr=0;for(ll l=1,r;l<=sqn;l=r+1){r=sqn/(sqn/l);tl=g[ID(l-1)];tr=g[ID(r)];ans+=(tr-tl)*(sqn/l);}sqn++;ll now=sqn;for(ll pp=2;pp<=sqrt(sqn);pp++){if(now%pp==0){if(sqn*sqn-pp<=n) ans++;}while(now%pp==0) now/=pp;}if(now!=1) if(sqn*sqn-now<=n) ans++;return ans;
}int main(){ll l,r;std::cin>>l>>r;std::cout<<count(r)-count(l-1);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

参考文献网站开发电商网站平台有哪些功能

1、Lambda表达式 Lambda表达式是Java8的新特性。 组成Lambda表达式的三个要素&#xff1a;形式参数&#xff0c;箭头操作符&#xff0c;代码块 Lambda表达式的格式&#xff1a;(形式参数) -> {代码块} //如&#xff1a;(int a, int b) -> {return a b;}形式参数&…

深入解析:精读C++20设计模式——行为型设计模式:命令模式

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Apache Beam入门教程:统一批流处理模型 - 教程

Apache Beam入门教程:统一批流处理模型 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

详细介绍:关于[汉芝电子低调获取证书,及生产各类加密产品]这档事

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

中国建设银行网站首页joy怎样添加字体到wordpress

目录 ★ 工作队列介绍代码演示测试注意点1&#xff1a;注意点2&#xff1a; ★ 工作队列介绍 工作队列&#xff1a; 就是让多个消费者竞争消费同一个消息队列的消息&#xff0c;相当于多个消费者共享消息队列。 ▲ RabbitMQ可以让多个消费者竞争消费同一个消息队列 ▲ 消息队…

华梦服饰网站建设中wordpress临时关闭站点

&#xff08;四&#xff09;无人机技术 1.无人作战飞机1.1 美国空军披露可与下一代战斗机编组作战的协同式无人作战飞机项目1.2 俄罗斯无人作战飞机取得重要进展 2.支援保障无人机2.1 欧洲无人机项目通过首个里程碑2.2 美国海军继续开展MQ-25无人加油机测试工作 3.微小型无人机…

花卉物流园做网站的素材phpcms做网站建栏目

1.关注点分离&#xff1a;每个功能最少会被切分为M-V-C三个部分&#xff0c;让开发者一次只需要关注一个部分&#xff0c;进而降低复杂难度&#xff0c;提高开发效率2.分层负责&#xff1a;明确切割&#xff0c;M-V-C三个部分并行开发3.自由操控HTML&#xff1a;在ASP.Net MVC中…

网站建设技术难题物流推广做哪个网站

在3dMax中如何把三维物体转化为由样条线构成的对象&#xff1f;通常这样的场景会出现在科研绘图或一些艺术创作当中&#xff0c;下面给大家详细讲解一种3dmax三维物体转样条线的方法。 第一部分&#xff1a;用粒子填充3D对象&#xff1a; 1.创建一个三维对象&#xff08;本例…

自适应h5网站模板wordpress wordcloud

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇利用OpenCV4.9制作自己的线性滤波器&#xff01; 下一篇 :OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV 函数 …

C# 与 C/C++ 互操作

本文介绍 C# 与 C/C++ 互操作的方法,尤重点介绍 P/Invoke。本文介绍 C# 与 C/C++ 互操作的方法,尤重点介绍 P/Invoke。 为什么要互操作? 主要有两个原因:用 C/C++ 编写算法核心代码,提高程序性能。 有一些库 / AP…

实用指南:gitlab-runner 再次实践中理解和学习

实用指南:gitlab-runner 再次实践中理解和学习pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

企业网站禁忌南京平面设计师联盟

一、实验目的&#xff1a; 1、掌握SQL SERVER的身份验证方式。 2、掌握SQL SERVER的权限。 3、掌握给数据库的用户和角色赋予权限和从用户和角色收回权限。 4、掌握GRANT&#xff0c;REVOKE&#xff0c;DENY的用法。 二、实验内容&#xff1a; 1、将SQL SERVER服务器的安全…

2025年7月28日当周关键漏洞汇总分析

美国网络安全和基础设施安全局(CISA)发布了2025年7月28日当周的漏洞公告,包含148个高危漏洞、157个中危漏洞和32个低危漏洞,涉及多个主流软件和系统,包括代码编辑器、代理服务器、内容管理系统等。漏洞摘要 - 2025年…

完整教程:Ref 和 Reactive 响应式原理剖析与代码实现

完整教程:Ref 和 Reactive 响应式原理剖析与代码实现pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

电子商务型网站建设免费自建网站

Java Web项目的层次结构及常见分包 Web项目中的层次 ControllerServiceDaoController层&#xff1a;表现层&#xff08;视图&#xff09;层。用来显示数据和接收用户数据Service层&#xff1a;业务逻辑层&#xff0c;用来处理页面。先写接口&#xff0c;后写实现类Dao层&#…

如何网上快速接网站开发订单手机网站进不去怎么办

场景介绍 小明接到学校老师安排的任务&#xff0c;需要批量将班级里同学们拍的普通照片转换为素描图&#xff0c;供课堂游戏使用&#xff0c;于是求助到程序员老爸&#xff0c;机智的程序员老爸分分钟用几行Python代码解决&#xff1a;在阿里云Serverless函数计算服务中部署普…

临安市住房和建设局网站深圳市网站推广公司

一. 背景 距离上一篇JS文章已经20天&#xff0c;经重新总结发现&#xff0c;上一篇概况的有点浅显&#xff0c;适合初学js的入门了解&#xff0c;但对于已经学习js一段时间的人&#xff0c;或者是想系统的了解JS体系&#xff0c;接下来的文章可能会更有帮助。 该系列博客的书写…

荣县住房和城乡建设厅网站wordpress收费缓存插件

文章目录 一、实验背景与目的二、实验拓扑三、实验需求四、实验解法1. PC 配置 IP 地址2. PC3 属于 Vlan10&#xff0c;PC4 属于 Vlan20&#xff0c;配置单臂路由实现 Vlan10 和 Vlan20 三层互通3. 测试在 PC3 上 Ping PC4 &#xff0c;可以 Ping 通 PC4 摘要&#xff1a; 本文…

【自然语言处理】文本规范化知识点梳理与习题总结 - 教程

【自然语言处理】文本规范化知识点梳理与习题总结 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

Rocky Linux 8 远程管理配置指南(宿主机 VNC + KVM 虚拟机 VNC) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …