【spoj】DIVCNTK
Solution
这题的话其实是。。洲阁筛模板题?差不多吧
题意就是给你一个函数\(S_k(x)\)
\]
其中\(\sigma_0(x)\)表示的是\(x\)的约数个数,现在已知\(n\)和\(k\)求\(S_k(n)\) mod \(2^{64}\)
额首先\(\sigma_0(x)\)是个积性函数
然后我们会发现。。这个东西在素数处的取值还是很好求的
&\sigma_0(p)=2\\
&\sigma_0(p^k)=k+1\\
&\sigma_0((p^k)^q)=qk+1\\
\end{aligned}
\]
那然后用\(g_i\)表示\([1,n]\)的素数个数,\(h_{i,j}\)表示\(\sum\limits_{k=2}^{i}[k的最小质因子>=P_j]\sigma_0(k)\)
然后用洲阁筛(或者额。。min_25)的那种方法来搞一下就好了,具体的讲解的话传送一波好了qwq
具体的一些实现细节都在上面那篇讲解向博文里面了不想再打一遍了qwq
代码大概长这个样子(然而我写的貌似是min_25。。。)以及这题貌似卡常有点qwq
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
#define ull unsigned long long
using namespace std;
const int MAXN=1e5+10;
ll g[MAXN*2],loc1[MAXN*2],loc2[MAXN*2],rec[MAXN*2];
int P[MAXN];
bool vis[MAXN];
ll n,m,K,cnt,Up,cntval,sq,T;
ull ans;
void prework(int n);
void init_loc();
int Pos(ll x){return x<=sq?loc1[x]:loc2[n/x];}
void get_g();
ull H(ll i,int j);
int main(){
#ifndef ONLINE_JUDGE
freopen("a.in","r",stdin);
#endif
scanf("%d",&T);
prework(MAXN);
for (int o=1;o<=T;++o){
scanf("%lld%lld",&n,&K);
sq=sqrt(n)+0.5;
init_loc();
get_g();
ans=H(n,1)+1;
printf("%llu\n",ans);
}
}
void prework(int n){
cnt=0;
for (int i=2;i<=n;++i){
if (!vis[i])
P[++cnt]=i;
for (int j=1;j<=cnt&&P[j]*i<=n;++j){
vis[P[j]*i]=true;
if (i%P[j]==0) break;
}
}
}
void init_loc(){//离散化
cntval=0;
for (ll i=1,pos;i<=n;i=pos+1){
rec[++cntval]=n/i;
pos=n/(n/i);
}
reverse(rec+1,rec+1+cntval);
for (int i=1;i<=cntval;++i)
if (rec[i]<=sq) loc1[rec[i]]=i;
else loc2[n/rec[i]]=i;
}
void get_g(){
for (int i=1;i<=cntval;++i) g[i]=rec[i]-1;
for (int j=1;j<=cnt&&1LL*P[j]*P[j]<=n;++j)//P的取值范围都是<sqrt(n)
for (int i=cntval;i>=1&&rec[i]>=1LL*P[j]*P[j];--i)
g[i]-=g[Pos(rec[i]/P[j])]-g[Pos(P[j]-1)];
}
ull H(ll i,int j){
if (i<=1) return 0;
ull ret=0;
ll tmp;
int k;
for (k=j;k<=cnt&&1LL*P[k]*P[k]<=n&&1LL*P[k]*P[k]<=i;++k){
tmp=P[k];
for (int q=1;tmp<=i;tmp*=P[k],++q)
ret+=(H(i/tmp,k+1)+1)*(q*K+1);
}
if (i>=P[k-1])//将i<P^2(也就是全是素数处点值的)部分算进去
ret+=(ull)(K+1)*(g[Pos(i)]-g[Pos(P[k-1])]);
return ret;
}
【spoj】DIVCNTK的更多相关文章
- 【SPOJ】DIVCNTK min_25筛
题目大意 给你 \(n,k\),求 \[ S_k(n)=\sum_{i=1}^n\sigma_0(i^k) \] 对 \(2^{64}\) 取模. 题解 一个min_25筛模板题. 令 \(f(n)= ...
- 【SPOJ】NUMOFPAL - Number of Palindromes(Manacher,回文树)
[SPOJ]NUMOFPAL - Number of Palindromes(Manacher,回文树) 题面 洛谷 求一个串中包含几个回文串 题解 Manacher傻逼题 只是用回文树写写而已.. ...
- 【SPOJ】Substrings(后缀自动机)
[SPOJ]Substrings(后缀自动机) 题面 Vjudge 题意:给定一个长度为\(len\)的串,求出长度为1~len的子串中,出现最多的出现了多少次 题解 出现次数很好处理,就是\(rig ...
- 【SPOJ】Longest Common Substring II (后缀自动机)
[SPOJ]Longest Common Substring II (后缀自动机) 题面 Vjudge 题意:求若干个串的最长公共子串 题解 对于某一个串构建\(SAM\) 每个串依次进行匹配 同时记 ...
- 【SPOJ】Longest Common Substring(后缀自动机)
[SPOJ]Longest Common Substring(后缀自动机) 题面 Vjudge 题意:求两个串的最长公共子串 题解 \(SA\)的做法很简单 不再赘述 对于一个串构建\(SAM\) 另 ...
- 【SPOJ】Distinct Substrings(后缀自动机)
[SPOJ]Distinct Substrings(后缀自动机) 题面 Vjudge 题意:求一个串的不同子串的数量 题解 对于这个串构建后缀自动机之后 我们知道每个串出现的次数就是\(right/e ...
- 【SPOJ】Distinct Substrings/New Distinct Substrings(后缀数组)
[SPOJ]Distinct Substrings/New Distinct Substrings(后缀数组) 题面 Vjudge1 Vjudge2 题解 要求的是串的不同的子串个数 两道一模一样的题 ...
- 【SPOJ】Power Modulo Inverted(拓展BSGS)
[SPOJ]Power Modulo Inverted(拓展BSGS) 题面 洛谷 求最小的\(y\) 满足 \[k\equiv x^y(mod\ z)\] 题解 拓展\(BSGS\)模板题 #inc ...
- 【SPOJ】QTREE7(Link-Cut Tree)
[SPOJ]QTREE7(Link-Cut Tree) 题面 洛谷 Vjudge 题解 和QTREE6的本质是一样的:维护同色联通块 那么,QTREE6同理,对于两种颜色分别维护一棵\(LCT\) 每 ...
随机推荐
- 纯CSS3实现旋转木马
test.html: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...
- Python基础灬函数(定义,参数)
函数 函数定义 # 定义一个计算绝对值的函数 def cal_abs(x): if x >= 0: return x else: return -x # 调用函数 print('-1的绝对值是: ...
- python打印图形大全(详解)
,): shixin=chr() print(shixin) -------------------结果:2) for i in range(0,10): shixin=chr(9679) print ...
- mysql中latin1编码中文转utf8
在mysql中,对应的表字段编码通常默认为lartin1编码,在本地客户端显示的时候看着是乱码,但是通过mysql -u -p -h命令登录后,select查询到数据是正常的,通过jdbc或者php等 ...
- spring mvc 详细配置
转自: http://www.cnblogs.com/superjt/p/3309255.html 现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是 ...
- 2018软工实践—Alpha冲刺(8)
队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 多次测试软件运行 学习OPENMP ...
- 寒假作业2:简化电梯设计elevator
Github仓库地址:hua-kui 寒假学习计划:学习计划 - 题目背景 一栋10层的大楼(楼层编号1-10),设有一台无限载重的电梯,初始时电梯停在1层.电梯移动1层的耗时为1,在某一层停靠的耗时 ...
- maven项目org.springframework.web.context.ContextLoaderListener的异常和tomcat zipexception的异常
使用到spring的maven web项目,在运行servers时,报错找不到org.springframework.web.context.ContextLoaderListener,web.xml ...
- purcell的emacs配置中的自动补全功能开启
标记一下,原文参看purcell的emacs配置中的自动补全功能开启 修改init-auto-complete.el文件 ;;(setq-default ac-expand-on-auto-compl ...
- 第八次java笔记