LOJ6053简单的函数(min_25筛)
LOJ6053简单的函数
https://loj.ac/p/6053
min_25筛模板题,但是要注意质数点有2比较特殊,需要在y==0的时候特判质数包含2的情况。
#include<bits/stdc++.h>
#define LL long long
using namespace std;
inline LL read()
{char x='\0';LL fh=1,sum=0;for(x=getchar();x<'0'||x>'9';x=getchar())if(x=='-')fh=-1;for(;x>='0'&&x<='9';x=getchar())sum=sum*10+x-'0';return fh*sum;
}
const LL N=1000009;
const LL mod=1e9+7;
LL n,sq;
LL pri[N],pcnt,sp[N];
bool vis[N];
inline void init(int mx)
{vis[0]=vis[1]=true;for(LL i=2;i<=mx;i++){if(!vis[i])pri[++pcnt]=i,sp[pcnt]=(sp[pcnt-1]+i)%mod;for(int j=1;j<=pcnt&&i*pri[j]<=mx;j++){vis[i*pri[j]]=true;if(i%pri[j]==0)break;}}
}
LL w[N],tot,ind1[N],ind2[N],g1[N],g0[N];
inline LL S(LL x,int y)
{if(x<=1||pri[y]>=x)return 0;LL k=(x<=sq)?ind1[x]:ind2[n/x];LL ans=g1[k]-g0[k]-(sp[y]-y);if(y==0)ans+=2;for(int i=y+1;i<=pcnt&&pri[i]*pri[i]<=x;i++){for(LL j=1,pe=pri[i];pe<=x;j++,pe*=pri[i]){ans=(ans+(pri[i]^j)*(S(x/pe,i)+(j!=1))%mod)%mod;}}return ans;
}
int main()
{n=read();sq=sqrt(n);init(sq);for(LL lp=1,rp=0;lp<=n;lp=rp+1){rp=n/(n/lp);w[++tot]=n/lp;if(w[tot]<=sq)ind1[w[tot]]=tot;else ind2[n/w[tot]]=tot;LL now=w[tot]%mod;g1[tot]=(now*(now+1)/2%mod-1+mod)%mod;g0[tot]=(now-1+mod)%mod;}
// cout<<g1[1]<<endl;//for(int i=1;i<=pcnt;i++){for(int j=1;j<=tot&&pri[i]*pri[i]<=w[j];j++){LL now=w[j]/pri[i];LL k=(now<=sq)?ind1[now]:ind2[n/now];g1[j]=(g1[j]-pri[i]*(g1[k]-sp[i-1])%mod+mod)%mod;g0[j]=(g0[j]-(g0[k]-(i-1))+mod)%mod;}}
// cout<<g1[1]<<' '<<g0[1]<<endl;//printf("%lld",(S(n,0)+1)%mod);return 0;
}
LOJ6053简单的函数(min_25筛)相关推荐
- LOJ.6053.简单的函数(Min_25筛)
题目链接 Min_25筛见这里: https://www.cnblogs.com/cjyyb/p/9185093.html https://www.cnblogs.com/zhoushuyu/p/91 ...
- loj #6053 简单的函数 min_25筛
\(\color{#0066ff}{ 题目描述 }\) 某一天,你发现了一个神奇的函数\(f(x)\),它满足很多神奇的性质: \(f(1)=1\) \(f(p^c)=p \oplus c\) (\( ...
- Min_25筛(LibreOJ #6053: 简单的函数)
一个简单的问题:求 (i为质数) 设小于的质数有t个,其中表示第i个质数 再设 (i为质数或者i的最小质因子不小于) 那么有 其中 , 就是答案 因为每次S(x, y)都是 ...
- Min_25 筛小结
Min_25 筛这个东西,完全理解花了我很长的时间,所以写点东西来记录一些自己的理解. 它能做什么 对于某个数论函数 \(f\),如果满足以下几个条件,那么它就可以用 Min_25 筛来快速求出这个函 ...
- [复习]莫比乌斯反演,杜教筛,min_25筛
[复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...
- Min_25筛学习笔记
引入问题:求一个积性函数\(f(i)\)的前缀和 \[ \sum_{i=1}^nf(i) \] 其中\(f(i)\)满足对质数\(p\)有\(f(p)\)是关于\(p\)的低次多项式.\(f(p^c) ...
- Min_25筛学习Tip+链接
前言 机房里差不多都会Min_25筛了,我也赶紧补一波坑v_v 参考: txc的Min_25筛学习笔记 yx的Min_25筛学习笔记 由于前面两位dalao的标题都是笔记,所以我这里就是小记了,因为这 ...
- 【UOJ#188】Sanrd(min_25筛)
[UOJ#188]Sanrd(min_25筛) 题面 UOJ 题解 今天菊开讲的题目.(千古神犇陈菊开,扑通扑通跪下来) 题目要求的就是所有数的次大质因子的和. 这个部分和\(min\_25\)筛中枚 ...
- 与Min_25筛有关的一些模板
模板 求∑i=1nf(i),f(pk)=pk×(pk−1)\sum \limits_{i = 1} ^{n} f(i), f(p ^ k) = p ^ k \times(p ^ k - 1)i=1∑n ...
最新文章
- linux 循环shell脚本,shell脚本的使用---for循环
- 首张人类黑洞照片的背后
- OpenCV中颜色分布直方图及其应用
- TokuDB介绍——本质是分形树(一个叶子4MB)+缓存减少写操作
- 第十四章 降维操作-机器学习老师板书-斯坦福吴恩达教授
- 属于PHP语言结构的是,PHP语言结构
- Linux下main函数带参数问题和atoi函数详解
- jquery设置滚动条距离页面顶部的高度
- mysql表缓冲大小可能设置过小_MySQL 5.7 my.cnf配置文件详解
- linux系统get命令详解,Ubuntu Linux系统下apt-get命令详解
- Bit Digital反驳美国做空机构J Capital对其比特币业务的虚假指控
- Archlinux桌面配置指南
- 1992-2018年中国各地级市夜间灯光数据
- camera link心得
- Vbs脚本编程简明教程
- 哪个软件能做英语测试,英语考试软件哪个好用 英语考试软件神器推荐
- python3爬取头条比基尼图片
- lol祖安服务器维护,触目惊心 被演员与代练所“支配”的英雄联盟
- 哒哒哒哒 一些有趣的东西 HihoCoder 1082 CUGOJ 1569
- CRM系统的“三驾马车”
热门文章
- vue data数据修改_Vue 超清晰思维导图(7张),详细知识点梳理!
- 想给男友一个惊喜,没想到是这样的结局......
- 每日一笑 | 你知道你爸妈当年是怎么在一起的吗?
- 超线程_超线程加核显 i310100+梅捷H410超值爆款组合
- 黑马c++32期_【每日一考】第40期:计提折旧
- 大厂Java初级开发工程师!!!面试必问项之Set实现类:TreeSet
- 世道变了,面试初级Java开发会问到Arrays!!!你不会还不知道吧!
- linux删除grid数据文件,MongoDB进阶系列(13)——GridFS大文件的添加、获取、查看、删除...
- java基础变量_Java基础语法之变量和常量
- jpa 根据主键生成策略获取id_如何在使用JPA和Hibernate时选择id生成策略