P5325 【模板】Min_25筛
题意:定义积性函数f(x)f(x)f(x),且f(p^k)=p^k*(p^k−1) (p是一个质数),求f(1)+f(2)+...f(n);
思路:板子题。重新打了一份装起来。
/*
定义积性函数f(x)f(x)f(x),且f(p^k)=p^k*(p^k−1)(p是一个质数),求f(1)+f(2)+...f(n);
n<=1e10; 2s;
*/
#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
const int Mod=,inv2=,inv3=;
struct min25 //很多部分需要long,不要搞错了
{
ll p[maxn],sp1[maxn],sp2[maxn],N;
ll g1[maxn],g2[maxn];int Sqr,ind1[maxn],ind2[maxn],num,tot;
ll w[maxn]; bool vis[maxn];
int MOD(int x){ if(x>=Mod) x-=Mod;return x; }
void prime() //得到素数,sp1,sp2
{
rep(i,,Sqr){
if(!vis[i]){
p[++num]=i;
sp1[num]=MOD(sp1[num-]+i);
sp2[num]=(sp2[num-]+1LL*i*i)%Mod;
}
for(int j=;j<=num&&p[j]*i<=Sqr;j++){
vis[p[j]*i]=;
if(i%p[j]==) break;
}
}
}
void getind()
{
for(ll i=;i<=N;i++){
ll now=N/i,j=N/now,t=now%Mod;
w[++tot]=now;
g1[tot]=MOD(t*(t+)/%Mod+Mod-); //因为我们全部都不考虑1。
g2[tot]=MOD(t*(t+)/%Mod*(t*+)%Mod*inv3%Mod+Mod-); //*2应该不需要%Mod
if(now<=Sqr) ind1[now]=tot;
else ind2[j]=tot;
i=j;
}
}
void getg1g2()
{
rep(i,,num){ //注意w里面的东西是递减的,所以可以滚动
for(int j=;j<=tot&&p[i]<=w[j]/p[i];j++){
ll now=w[j]/p[i];
int k=now<=Sqr?ind1[now]:ind2[N/now];
g1[j]=MOD(g1[j]-1LL*p[i]*(g1[k]-sp1[i-]+Mod)%Mod+Mod);
g2[j]=MOD(g2[j]-1LL*p[i]*p[i]%Mod*(g2[k]-sp2[i-]+Mod)%Mod+Mod);
}
}
}
int S(ll x,int y)
{
if(x<=p[y]) return ;
ll k=x<=Sqr?ind1[x]:ind2[N/x];
ll ans=(g2[k]-g1[k]+Mod-(sp2[y]-sp1[y])+Mod)%Mod;
for(int i=y+;i<=num&&p[i]*p[i]<=x;i++) {
ll pe=p[i];
for(int e=;pe<=x;e++,pe=pe*p[i]){
ll xx=pe%Mod;
ans=(ans+xx*(xx-)%Mod*(S(x/pe,i)+(e!=)))%Mod;
//这里的f(x)对应xx*(xx-1),其他函数把这里换了就行。
}
}
return ans%Mod;
}
void solve(ll n)
{
N=n; Sqr=sqrt(N);
prime(); //筛根号部分素数。
getind(); //得到编号,以及一次前缀和,二次前缀和。
getg1g2(); //得到素数1次前缀和,二次前缀和。
printf("%d\n",MOD(S(N,)+));
}
}T;
int main()
{
ll N;
scanf("%lld",&N);
T.solve(N);
return ;
}
P5325 【模板】Min_25筛的更多相关文章
- Solution -「洛谷 P5325」Min_25 筛
\(\mathcal{Description}\) Link. 对于积性函数 \(f(x)\),有 \(f(p^k)=p^k(p^k-1)~(p\in\mathbb P,k\in\mathbb ...
- [模板]Min_25筛
用途 快速($O(\frac{n^{3/4}}{logn})$)地计算一些函数f的前缀和,以及(作为中间结果的)只计算质数的前缀和 一般要求f(p)是积性函数,$f(p)$是多项式的形式,且$f(p^ ...
- LG5325 【模板】Min_25筛
P5325 [模板]Min_25筛 题目背景 模板题,无背景. 题目描述 定义积性函数$f(x)$,且$f(p^k)=p^k(p^k-1)$($p$是一个质数),求 $$\sum_{i=1}^n f( ...
- P4213 【模板】杜教筛(Sum) min_25筛
\(\color{#0066ff}{ 题目描述 }\) 给定一个正整数\(N(N\le2^{31}-1)\) 求 \(ans_1=\sum_{i=1}^n\varphi(i)\) \(ans_2=\s ...
- 模板 - 数学 - 数论 - Min_25筛
终于知道发明者的正确的名字了,是Min_25,这个筛法速度为亚线性的\(O(\frac{n^{\frac{3}{4}}}{\log x})\),用于求解具有下面性质的积性函数的前缀和: 在 \(p\) ...
- luogu P5325 Min_25筛
LINK:Min_25筛 新版感觉有点鬼畜 而且旧版的也够用了至少. 这个并不算很简单也不算很困难的知识点 学起来还是很麻烦的. (误入了很多dalao的blog 说的云里雾里的 甚是懵逼 这里推荐几 ...
- Min_25 筛 学习笔记
原文链接https://www.cnblogs.com/zhouzhendong/p/Min-25.html 前置技能 埃氏筛法 整除分块(这里有提到) 本文概要 1. 问题模型 2. Min_25 ...
- 【SPOJ】DIVCNTK min_25筛
题目大意 给你 \(n,k\),求 \[ S_k(n)=\sum_{i=1}^n\sigma_0(i^k) \] 对 \(2^{64}\) 取模. 题解 一个min_25筛模板题. 令 \(f(n)= ...
- 关于min_25筛的一些理解
关于min_25筛的一些理解 如果想看如何筛个普通积性函数啥的,就别往下看了,下面没有的(QwQ). 下文中,所有的\(p\)都代表质数,\(P\)代表质数集合. 注意下文中定义的最小/最大质因子都是 ...
- LOJ6625 时间复杂度(min_25筛)
本人在LOJ的第三题(前两题太水不好意思说了QwQ),欢迎大家踩std. 题目链接:LOJ 题目大意:定义函数 $f$:($minp$ 表示最小质因子) $$f(x)=\begin{cases}0&a ...
随机推荐
- Markdown 编辑器指南
一直觉得博客园默认的编辑器不好用,后来了解了Markdown,并且博客园也支持Markdown标记,所以写篇博客总结下. 一.认识 Markdown Markdown 是一种用来写作的轻量级「标记语言 ...
- 遍历 HashSet 的方法
遍历 HashSet 的方法 import java.util.HashSet; import java.util.Iterator; import java.util.Set; public cla ...
- [转帖]How long does it take to make a context switch?
How long does it take to make a context switch? FROM: http://blog.tsunanet.net/2010/11/how-long-do ...
- Hystrix实现ThreadLocal上下文的传递 转
springcloud微服务中, 服务间传输全局类参数,如session信息等. 一.问题背景 Hystrix有2个隔离策略:THREAD以及SEMAPHORE,当隔离策略为 THREAD 时,是没办 ...
- LOJ2392 JOISC2017 烟花棒 二分、贪心
传送门 先二分一个最大速度\(v\). 分析移动的性质.很显然的事情是在火焰两边的所有人都会往火焰的方向以最快的速度运动,这样可以使当前位置更早获得火焰,同时当前拥有火焰的若干个人为了传递火焰自然也会 ...
- Mysql系列(一)—— 基于5.7.22 解压版下载、安装、配置和卸载
1.下载 从官网中直接获取自己想要的版本: MySQL Community Server 5.7.22 2.解压 将下载到的文件解压缩到自己喜欢的位置. 与mysql 5.6不同的是5.7版本中没有d ...
- ABP 执行sql语句
由于业务繁琐,用EF比较麻烦,需要用到sql语句,然后网上找了很久,找到的例子都是老版本的,新版本有先声明已经去掉,不能用了 在这里做个小记 首先注入实例 private readonly IDbCo ...
- CodeForces 536D Tavas in Kansas
洛谷题目页面传送门 & CodeForces题目页面传送门 A和B在一张无向连通图\(G=(V,E),|V|=n,|E|=m\)上玩一个游戏,节点\(i\)有一个权值\(v_i\).A.B分别 ...
- Java自学-日期 Date
Java的日期类Date Date类 注意:是java.util.Date; 而非 java.sql.Date,此类是给数据库访问的时候使用的 示例 1 : 时间原点概念 所有的数据类型,无论是整数, ...
- Matlab桥接模式
桥接模式(Bridge)是一种结构型设计模式.它是用组合关系代替继承关系来实现,可以处理多维度变化的场景(https://blog.csdn.net/qq_31156277/article/detai ...