LOJ #124. 除数函数求和 1
题目描述
$\sigma_k(n) = \sum_{d | n} d ^ k$
求 $\sum_{i=1}^n\sigma_k(i)$ 的值对 109 取模的结果。
输入格式
第一行两个正整数 n,k 。
输出格式
第一行输出答案。
样例
输入样例
5 2
输出样例
63
数据范围与提示
对于 100% 的数据,1≤n,k≤1077 。
Solution:
本题ZYYS。。。
直接枚举显然不行,我们考虑改为求$n$的某一因子$d$在整个函数中的贡献是多少。
套上数论分块的思想,一个因子$d$对式子的贡献是$\lfloor{\frac{n}{d}}\rfloor\times d^k$。
这样我们需要处理的就是$d^k$,直接$O(n\log k)$快速幂求出每个因子的幂是肯定不行的,因为$n$是$10^7$,直接会T。
那么还是考虑优化,我们发现,每个数都能唯一分解,而在求幂时会有重复计算的质因子幂。于是,我们考虑线筛,这样就可以用每个数的最小质因子幂去算它的幂了,那么整个过程只会对$n\leq 10^7$内的质数进行快速幂,最后复杂度就成了$\sqrt n \log k$,完全可行。
所以最后就只需再$O(n)$扫一遍因子累加贡献求和就好了。
代码:
#include<iostream>
#define il inline
#define ll long long
#define For(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
#define Bor(i,a,b) for(int (i)=(b);(i)>=(a);(i)--)
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)>(b)?(b):(a)) using namespace std;
const int N=1e7,mod=1e9+;
int prime[N+],ans,cnt,n,k,sum[N+];
bool isprime[N+]; il int fast(ll s,ll k){
ll ans=;
while(k){
if(k&)ans=ans*s%mod;
k>>=;
s=s*s%mod;
}
return ans;
} il void init(){
sum[]=;
For(i,,n+) {
if(!isprime[i]) prime[++cnt]=i,sum[i]=fast(i,k);
for(int j=;j<=cnt&&prime[j]*i<=n+;j++){
isprime[prime[j]*i]=;
sum[prime[j]*i]=sum[i]*1ll*sum[prime[j]]%mod;
if(i%prime[j]==)break;
}
}
} int main(){
ios::sync_with_stdio();
cin>>n>>k;
init();
For(i,,n) ans=(ans+1ll*(n/i)*sum[i])%mod;
cout<<ans;
return ;
}
LOJ #124. 除数函数求和 1的更多相关文章
- Loj #124. 除数函数求和
链接:https://loj.ac/problem/124 就是筛一下积性函数. #include<bits/stdc++.h> #define ll long long #define ...
- LiberOJ #124. 除数函数求和 【整除分块】
一.题目 #124. 除数函数求和 二.分析 比较好的一题,首先我们要对题目和样例进行分析,明白题目的意思. 由于对于每一个$d$,它所能整除的数其实都是定的,且数量是$ \lfloor \frac{ ...
- Loj #125. 除数函数求和(2)
link : https://loj.ac/problem/125 分块calc即可. #include<bits/stdc++.h> #define ll long long using ...
- loj124 除数函数求和 1
loj124 除数函数求和 1 https://loj.ac/problem/124 $\sum_{i=1}^n(\sum_{d|i}d^k)=\sum_{i=1}^n(i^k*{\lfloor}{\ ...
- loj125 除数函数求和 2
https://loj.ac/problem/125 $原式=2\sum_{i=1}^n(i^2*{\lfloor}{\frac{n}{i}}{\rfloor})+3\sum_{i=1}^n(i*{\ ...
- 【LOJ#572】Misaka Network 与求和(莫比乌斯反演,杜教筛,min_25筛)
[LOJ#572]Misaka Network 与求和(莫比乌斯反演,杜教筛,min_25筛) 题面 LOJ \[ans=\sum_{i=1}^n\sum_{j=1}^n f(gcd(i,j))^k\ ...
- Loj #528. 「LibreOJ β Round #4」求和 (莫比乌斯反演)
题目链接:https://loj.ac/problem/528 题目:给定两个正整数N,M,你需要计算ΣΣu(gcd(i,j))^2 mod 998244353 ,其中i属于[1,N],j属于[1,M ...
- LOJ #2058「TJOI / HEOI2016」求和
不错的推柿子题 LOJ #2058 题意:求$\sum\limits_{i=0}^n\sum\limits_{j=0}^nS(i,j)·2^j·j!$其中$ S(n,m)$是第二类斯特林数 $ Sol ...
- BZOJ5291/洛谷P4458/LOJ#2512 [Bjoi2018]链上二次求和 线段树
原文链接http://www.cnblogs.com/zhouzhendong/p/9031130.html 题目传送门 - LOJ#2512 题目传送门 - 洛谷P4458 题目传送门 - BZOJ ...
随机推荐
- Android Studio项目中三种依赖的添加方式
通常一个AS项目中的依赖关系有三种,一是本地依赖(主要是对本地的jar包),二是模块依赖,三是远程依赖:添加这些依赖的目的在于上我们想要在项目的某一个模块中使用其中的功能,比如okttp这个网络框架库 ...
- Docker 日常指令
镜像 制作镜像 docker build –t 172.0.0.1/demo/xxx:20180906_002 .[不要忘记 点] 查看镜像 docker images 删除镜像 docker rmi ...
- windows tensorflow 简单安装
需要64位系统windows, 下载64位的python3.5 官网下载地址:https://www.python.org/downloads/release/python-352/ 百度云下载地址: ...
- HDU.2111 Saving HDU(贪心)
题目来源:Saving HDU 题意分析: XHD有个容量为v的口袋,有n个宝贝,每种宝贝的价值不一样,每种宝贝单位体积的价格也不一样,宝贝可以分割,分割后的价值和对应的体积成正比.求XHD最多能取回 ...
- SpringCloud微服务基础 Eureka、Feign、Ribbon、Zuul、Hystrix、配置中心的基础使用
1.单点系统架构 传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N ...
- Linux系统崩溃,数据迁移
就在1小时前,处理了件如标题所述的麻烦事儿.吃完午饭,想对此作个总结,一来自己梳理下过程以便后面遇见类似的事可以 快速处理,二来同行的小伙伴们可以探讨下.故事是这样的,公司所在园区物业晚上断电8小时, ...
- Redis ---------- Sort Set排序集合类型
sortset是(list)和(set)的集中体现 与set的相同点: string类型元素的集合 不同点: sortset的元素:值+权 适合场合 获得最热门前5个帖子的信息 例如 select * ...
- JZOJ 5922. sequence
5922. [NOIP2018模拟10.23]sequence (File IO): input:sequence.in output:sequence.out Time Limits: 1000 m ...
- JZOJ 5919. 逛公园
Description 琥珀色黄昏像糖在很美的远方,思念跟影子在傍晚一起被拉长……Description 小 B 带着 GF 去逛公园,公园一共有 n 个景点,标号为 ...
- 45.VUE学习之--组件之父组件使用scope定义子组件模板样式结构实例讲解
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...