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筛)相关推荐

  1. LOJ.6053.简单的函数(Min_25筛)

    题目链接 Min_25筛见这里: https://www.cnblogs.com/cjyyb/p/9185093.html https://www.cnblogs.com/zhoushuyu/p/91 ...

  2. loj #6053 简单的函数 min_25筛

    \(\color{#0066ff}{ 题目描述 }\) 某一天,你发现了一个神奇的函数\(f(x)\),它满足很多神奇的性质: \(f(1)=1\) \(f(p^c)=p \oplus c\) (\( ...

  3. Min_25筛(LibreOJ #6053: 简单的函数)

    一个简单的问题:求 (i为质数) 设小于的质数有t个,其中表示第i个质数 再设  (i为质数或者i的最小质因子不小于) 那么有             其中 ,  就是答案 因为每次S(x, y)都是 ...

  4. Min_25 筛小结

    Min_25 筛这个东西,完全理解花了我很长的时间,所以写点东西来记录一些自己的理解. 它能做什么 对于某个数论函数 \(f\),如果满足以下几个条件,那么它就可以用 Min_25 筛来快速求出这个函 ...

  5. [复习]莫比乌斯反演,杜教筛,min_25筛

    [复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...

  6. Min_25筛学习笔记

    引入问题:求一个积性函数\(f(i)\)的前缀和 \[ \sum_{i=1}^nf(i) \] 其中\(f(i)\)满足对质数\(p\)有\(f(p)\)是关于\(p\)的低次多项式.\(f(p^c) ...

  7. Min_25筛学习Tip+链接

    前言 机房里差不多都会Min_25筛了,我也赶紧补一波坑v_v 参考: txc的Min_25筛学习笔记 yx的Min_25筛学习笔记 由于前面两位dalao的标题都是笔记,所以我这里就是小记了,因为这 ...

  8. 【UOJ#188】Sanrd(min_25筛)

    [UOJ#188]Sanrd(min_25筛) 题面 UOJ 题解 今天菊开讲的题目.(千古神犇陈菊开,扑通扑通跪下来) 题目要求的就是所有数的次大质因子的和. 这个部分和\(min\_25\)筛中枚 ...

  9. 与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 ...

最新文章

  1. linux 循环shell脚本,shell脚本的使用---for循环
  2. 首张人类黑洞照片的背后
  3. OpenCV中颜色分布直方图及其应用
  4. TokuDB介绍——本质是分形树(一个叶子4MB)+缓存减少写操作
  5. 第十四章 降维操作-机器学习老师板书-斯坦福吴恩达教授
  6. 属于PHP语言结构的是,PHP语言结构
  7. Linux下main函数带参数问题和atoi函数详解
  8. jquery设置滚动条距离页面顶部的高度
  9. mysql表缓冲大小可能设置过小_MySQL 5.7 my.cnf配置文件详解
  10. linux系统get命令详解,Ubuntu Linux系统下apt-get命令详解
  11. Bit Digital反驳美国做空机构J Capital对其比特币业务的虚假指控
  12. Archlinux桌面配置指南
  13. 1992-2018年中国各地级市夜间灯光数据
  14. camera link心得
  15. Vbs脚本编程简明教程
  16. 哪个软件能做英语测试,英语考试软件哪个好用 英语考试软件神器推荐
  17. python3爬取头条比基尼图片
  18. lol祖安服务器维护,触目惊心 被演员与代练所“支配”的英雄联盟
  19. 哒哒哒哒 一些有趣的东西 HihoCoder 1082 CUGOJ 1569
  20. CRM系统的“三驾马车”

热门文章

  1. vue data数据修改_Vue 超清晰思维导图(7张),详细知识点梳理!
  2. 想给男友一个惊喜,没想到是这样的结局......
  3. 每日一笑 | 你知道你爸妈当年是怎么在一起的吗?
  4. 超线程_超线程加核显 i310100+梅捷H410超值爆款组合
  5. 黑马c++32期_【每日一考】第40期:计提折旧
  6. 大厂Java初级开发工程师!!!面试必问项之Set实现类:TreeSet
  7. 世道变了,面试初级Java开发会问到Arrays!!!你不会还不知道吧!
  8. linux删除grid数据文件,MongoDB进阶系列(13)——GridFS大文件的添加、获取、查看、删除...
  9. java基础变量_Java基础语法之变量和常量
  10. jpa 根据主键生成策略获取id_如何在使用JPA和Hibernate时选择id生成策略