loj124 除数函数求和 1
2024-08-30 16:22:13
loj124 除数函数求和 1
$\sum_{i=1}^n(\sum_{d|i}d^k)=\sum_{i=1}^n(i^k*{\lfloor}{\frac{n}{i}}{\rfloor})$
不能直接数论分块了,但是一看数据范围,可以线性筛啊
怎么筛呢?可以把所有的$i^k$筛出来。就是质数直接算,其他的根据$(a*b)^k=a^k*b^k$在被筛掉的时候递推出来。
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
#define N 10000010
#define md 1000000007
bool nprime[N+];int prime[N+],len;
ll A[N+],ans,n,k;
ll poww(ll a,ll b)
{
ll base=a,ans=;
while(b)
{
if(b&) ans=ans*base%md;
base=base*base%md;
b>>=;
}
return ans;
}
int main()
{
ll i,j;
scanf("%lld%lld",&n,&k);
A[]=;
for(i=;i<=n;i++)
{
if(!nprime[i]) prime[++len]=i,A[i]=poww(i,k);
for(j=;j<=len&&i*prime[j]<=n;j++)
{
nprime[i*prime[j]]=;
A[i*prime[j]]=A[i]*A[prime[j]]%md;
if(i%prime[j]==) break;
}
}
for(i=;i<=n;i++) ans=(ans+A[i]*(n/i)%md)%md;
printf("%lld",ans);
return ;
}
最新文章
- html文本标准模式,首行空两格,两端对齐,行高
- HTTP状态301、404、200、304分别表示什么意思
- (二)java特征
- 重学HTML
- hdu1232 畅通工程
- [SDJX2015]面积
- nginx 配置轮询服务
- Ruby小例子
- javaScript操作select
- [SVN]两个分支合并
- 通过GIT_COMMIT进行代码回滚
- macof python攻击脚本
- Reac全家桶笔记
- Axis2 服务器端抛出ServiceClass object does not implement问题解决方法
- pycharm自动创建python头文件
- blfs(systemd版本)学习笔记-wget的安装与配置
- Linux用户相关指令
- JS基础篇-- body.scrollTop与documentElement.scrollTop
- Python基础之字典操作
- Luban 鲁班 图片压缩 MD
热门文章
- layer弹出层不居中解决方案,仅显示遮罩,没有弹窗
- 基于redis集群实现的分布式锁,可用于秒杀商品的库存数量管理,有測试代码(何志雄)
- HTTP请求中带有特殊字符";|";,返回400错误
- string和int互相转化
- java sleep和wait的区别和联系
- OO的片段,继承与组合,继承的优点与目的,虚机制在构造函数中不工作
- js中字符串函数indexOf与search的区别
- maven依赖排除
- Hihocoder #1077 : RMQ问题再临-线段树(线段树:结构体建树+更新叶子往上+查询+巧妙使用father[]+线段树数组要开大4倍 *【模板】)
- download file by python in google colab