LOJ #124. 除数函数求和 1 题解
时间:2021-07-25
本文章向大家介绍LOJ #124. 除数函数求和 1 题解,主要包括LOJ #124. 除数函数求和 1 题解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目大意
定义 \(\sigma_k(n)=\sum\limits_{d|n}d^k\),求 \(\sum\limits_{i=1}^n\sigma_k(i)\)。其中 \(n,k\leq 10^7\)。
分析
我们不需要知道 \(\sigma_k(n)\) 是否是积性函数,因为我们只需要求他的前缀和。
\[\begin{aligned}\sum_{i=1}^n\sigma_k(i)&=\sum_{d=1}^nd^k\sum_{i=1}^n[d|i]\\&=\sum_{d=1}^nd^k\lfloor\frac{n}{d}\rfloor\end{aligned}
\]
于是欢乐地线筛一遍 \(d^k\) 然后欢乐地线性模拟一遍就好力。
代码
#include<bits/stdc++.h>
#define HohleFeuerwerke using namespace std
#pragma GCC optimize(3,"Ofast","-funroll-loops","-fdelete-null-pointer-checks")
#pragma GCC target("ssse3","sse3","sse2","sse","avx2","avx")
#define int long long
HohleFeuerwerke;
inline int read(){
int s=0,f=1;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) s=s*10+c-'0';
return s*f;
}
inline void write(int x){
if(x<0) putchar('-'),x=-x;
if(x>=10) write(x/10);
putchar('0'+x%10);
}
const int MOD=1e9+7,MAXN=1e7+5;
int n,k,ans;
int f[MAXN],tot,sum[MAXN],pri[MAXN];
bitset<MAXN> ispri;
inline int ksm(int a,int b){
if(b==0) return 1;
else if(b%2==1) return a*ksm(a,b-1)%MOD;
else{
int tmp=ksm(a,b/2);
return tmp*tmp%MOD;
}
}
inline void init(){
f[1]=1,ispri[1]=1;
for(int i=1;i<=n;i++){
if(!ispri[i]) f[i]=ksm(i,k),pri[++tot]=i;
for(int j=1;j<=tot&&i*pri[j]<=n;j++){
ispri[i*pri[j]]=1;
f[i*pri[j]]=(f[i]*f[pri[j]])%MOD;
if(!i%pri[j]) break;
}
}
}
signed main()
{
n=read(),k=read(); init();
for(int i=1;i<=n;i++) ans=(ans+f[i]*(n/i))%MOD;
write(ans); puts("");
}
原文地址:https://www.cnblogs.com/AllWeKnow/p/15057221.html
- Java基础——数据类型之间的转换
- Java程序员面试宝典——重要习题整理
- Java8读文件方法代码学习
- .NET ORM 的 “SOD蜜”--零基础入门篇
- 【Spark研究】用Apache Spark进行大数据处理之入门介绍
- DataSet的灵活,实体类的方便,DTO的效率:SOD框架的数据容器,打造最适合DDD的ORM框架
- Java 内部类种类及使用解析
- JSON与XML的区别比较
- 无需开启宏即可渗透:在Office文档中利用DDE执行命令
- SQLiv:一款批量SQL注入漏洞扫描工具
- 【Python环境】监督学习之KNN算法
- 【数据科学】什么是数据科学家与数据科学
- Android基础总结(12)——XML和JSON解析
- 【Python环境】scikit-learn的线性回归模型
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python多进程及多线程基础
- Python字符串三种格式化输出
- 你需要知道的Python代码规范性检查(pylint和flake8)
- Linux下安装python环境
- 【5】进大厂必须掌握的面试题-Java面试-spring
- Python 3.7 自动化接口测试简单实例
- 从 0 开始构建一个亿级请求的微服务架构
- ruby+cucumber+watir环境搭建
- Python常用模块os和shutil学习
- Python简单实现批量下载无版权图片
- Pycharm自动添加文件头注释和函数注释参数
- ClickHouse TTL for Columns and Tables
- Sentence-BERT详解
- 分布式文件系统(HDFS和FastDFS)
- Springboot集成JUnit5优雅进行单元测试