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 ...
随机推荐
- phpcms发布文章自定义字段
phpcms发布文章自定义字段1 进入后台 模型管理 新建模型 里面可以自定义字段了
- python3 根据时间获取本月一号和月末日期
一.概述 有一个统计报表需求,需要知道上个月的第一天和最后一天,来进行上个月的数据统计. 二.代码实现 #!/usr/bin/env python3 # coding: utf-8 import ca ...
- 【mysql】获取某个表所有列名【mybatis】
方法1:[仅指定表名] select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your-table-name'; ...
- C#基础语法,快速上収C#
C#代码基础语法 对新手的帮助很大,可以尝试多看看然后在敲敲 // 单行注释以 // 开始 /* 多行注释是这样的 */ /// <summary> /// XML文档注释 /// < ...
- 2019 竞网智赢java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.竞网智赢等公司offer,岗位是Java后端开发,因为发展原因最终选择去了竞网智赢,入职一年时间了,也成为了面 ...
- pyspider最佳实践
pyspider是好东西,非常稳定,很久很久以前架了一个,心冷了一段时间,但人家尽忠职守地持续运行,一直在抓取东西. 结合chrome,抓取代码简直不要太好写,没想到,最头大的,还是它的调度.明明感觉 ...
- Nginx中的$document_uri与$request_uri以及$http_referer
Nginx基于$document_uri的访问控制,变量$document_uri该变量等价于$uri,其实也等价于location匹配. 示例1: 当用户请求的url中包含/admin/时,直接返回 ...
- JS调用栈的一些总结
原文地址 调用栈 调用栈是解释器追踪函数执行流的一种机制.当执行环境中调用了多个函数函数时,通过这种机制,我们能够追踪到哪个函数正在执行,执行的函数体中又调用了哪个函数. 我们知道JavaScript ...
- 从零搭建一个简单的webpack环境
1.npm Init 2.创建webpack.config.js文件,并配置入口和出口 3.Package.json的script中配置命令对应的操作 .安装webpack-dev-server 模块 ...
- Vue-使用计时器实现跑马灯效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...