$Min$_$25$筛模版题

为什么泥萌常数都那么小啊$ QAQ$

传送门:Here


题意:

$ f(1)=1$
$ f(p^c)=p⊕c(p 为质数,⊕ 表示异或)$
$ f(ab)=f(a)f(b)(a 与 b 互质)$

求$ \sum\limits_{i=1}^n f(i)$


$ solution:$

显然有$ f(P_i)=P_i-1+2*[P_i=2]$

暂时忽略$ P_i=2$的情况求出质数贡献

然后再把答案$ +2$即可


$ my \ code: $

#include<ctime>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define p 1000000007
#define M 200010
#define rt register int
#define ll long long
using namespace std;
inline ll read(){
ll x = ; char zf = ; char ch = getchar();
while (ch != '-' && !isdigit(ch)) ch = getchar();
if (ch == '-') zf = -, ch = getchar();
while (isdigit(ch)) x = x * + ch - '', ch = getchar(); return x * zf;
}
void write(ll y){if(y<)putchar('-'),y=-y;if(y>)write(y/);putchar(y%+);}
void writeln(const ll y){write(y);putchar('\n');}
int i,j,k,m,x,y,z,cnt,sz;ll n;
int sp[M],ss[M];bool pri[M];
int id1[M],id2[M],t,h[M];ll g[M],q[M];
#define inv2 500000004
void init(){
sz=sqrt(n);
for(rt i=;i<=sz;i++){
if(!pri[i])ss[++cnt]=i,sp[cnt]=(sp[cnt-]+i)%p;
for(rt j=;i*ss[j]<=sz&&j<=cnt;j++){
pri[i*ss[j]]=;
if(i%ss[j]==)break;
}
}
for(ll i=;i<=n;){
ll v=n/i;ll R=n/v;q[++t]=v;
if(v<=sz)id1[v]=t;else id2[R]=t;
v%=p;h[t]=v-;g[t]=v*(v+)%p*inv2%p-;
i=R+;
}
}
inline int id(const ll x){return x<=sz?id1[x]:id2[n/x];}
int S(ll x,int y){
if(x<=||ss[y]>x)return ;
ll ret=g[id(x)]-sp[y-]+y-;
for(rt i=y;(ll)ss[i]*ss[i]<=x&&i<=cnt;i++)
for(ll j=ss[i],e=;j*ss[i]<=x;j*=ss[i],e++)
(ret+=(ll)(ss[i]^e)*S(x/j,i+)+(ss[i]^e+))%=p; return ret;
}
int main(){
n=read();init();
for(rt j=;j<=cnt;j++)
for(rt i=;i<=t&&q[i]>=(ll)ss[j]*ss[j];i++){
const int k=id(q[i]/ss[j]);
(g[i]-=(ll)ss[j]*(g[k]-sp[j-]))%=p;
(h[i]-=(h[k]-j+))%=p;
}
for(rt i=;i<=t;i++)(g[i]-=h[i])%=p;
if(n==)cout<<;else cout<<(S(n,)++p)%p;
return ;
}

LOJ #6053. 简单的函数的更多相关文章

  1. LOJ 6053 简单的函数——min_25筛

    题目:https://loj.ac/problem/6053 min_25筛:https://www.cnblogs.com/cjyyb/p/9185093.html 这里把计算 s( n , j ) ...

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

    题目:https://loj.ac/problem/6053 参考博客:http://www.cnblogs.com/zhoushuyu/p/9187319.html 算 id 也可以不存下来,因为 ...

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

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

  4. loj#6053. 简单的函数(Min_25筛)

    传送门 题解 \(Min\_25\)筛有毒啊--肝了一个下午才看懂是个什么东西-- \(zsy\)巨巨强无敌-- //minamoto #include<bits/stdc++.h> #d ...

  5. Case when 的用法,简单Case函数

    Case when 的用法,简单Case函数 简单CASE表达式,使用表达式确定返回值. 语法: CASE search_expression WHEN expression1 THEN result ...

  6. python之简单的函数介绍(http://docs.python.org/3/library)

    Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用. 在上面的网站上我们可以进行查询,Python具体都有哪些函数. 我们也可以再交互命令行中来查找函数: >> ...

  7. php简单表格函数

    php简单表格函数 代码 <?php //ctrl+shift+j /** * @param unknown $rows * @param unknown $cols * @param stri ...

  8. python简单的函数定义和用法实例

    python简单的函数定义和用法实例 这篇文章主要介绍了python简单的函数定义和用法,实例分析了Python自定义函数及其使用方法,具有一定参考借鉴价值,需要的朋友可以参考下 具体分析如下: 这里 ...

  9. python简单的函数应用

    一个简单的函数应用,包括自定义函数,lambda函数,列表解析. 1 #!usr/bin/env python3 2 # -*- coding:utf-8 -*- 3 4 #开始定义函数 5 def ...

随机推荐

  1. js小结

    1,浏览器对json支持的方法: JSON.parse(jsonstr);将string转为json的对象. JSON.stringify(jsonobj);将json对象转为string. 2,js ...

  2. vetur插件提示 'v-for' directives require 'v-bind:key' directives.错误的解决办法

    在用vscode编写vue代码时,因为安装的有vetur插件,所以当代码中有v-for语法时,会提示 [vue-language-server] 'v-for' directives require ...

  3. 震撼:多线程下的操作离不开synchronized

    昨天在写一个聊天程序,在发送消息的时候是采用单独的一个线程,接收消息是在另一个线程中完成. 我在测试的过程中发现,有的时候当消息比较多时,比如: 当我刚刚发送完一条消息,这个时候要将我发送的消息添加到 ...

  4. 第四篇-以ConstraintLayout进行Android界面设计

    此文章基于第三篇. 一.新建一个layout.xml文件,创建方法不再赘述,在Design界面右击LinearLayout,点击Convert LinearLayout to ConstraintLa ...

  5. 斯坦福大学公开课机器学习:machine learning system design | data for machine learning(数据量很大时,学习算法表现比较好的原理)

    下图为四种不同算法应用在不同大小数据量时的表现,可以看出,随着数据量的增大,算法的表现趋于接近.即不管多么糟糕的算法,数据量非常大的时候,算法表现也可以很好. 数据量很大时,学习算法表现比较好的原理: ...

  6. Vue(基础三)_监听器与计算属性

    一.前言 本文主要涉及:     1.watch()监听单个属性 2.computed可以监听多个属性 3.点击li标签切换音乐案例 二.主要内容 1.watch()监听器(监听单一数据) (1)监听 ...

  7. 《Java 程序设计》第一周学习总结

    本周因为刚刚接触Linux和码云等等,所以在完成作业的时候遇到很多问题. 首先,在安装Linux没有安装盘片,在盘片安装之后成功建立虚拟机,建立虚拟机后首先要下载jdk,第一次下载时没有选对格式,Li ...

  8. Linux系统centos6.7上安装libevent

    1 下载地址:http://libevent.org/ 2.解压 tar zxvf libevent-2.0.21-stable.tar.gz 安装前请先安装 gcc yum install gcc ...

  9. 数据库基础SQL知识面试题二

    数据库基础SQL知识面试题二 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.选课系统SQL语法练习 course数据库中有以下四张表: •students表(学生表): si ...

  10. SQL Server日志过大,清理日志

    直接执行下面的代码 USE [master] GO ALTER DATABASE 数据库 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 数据库 ...