loj124 除数函数求和 1

https://loj.ac/problem/124

$\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 ;
}

最新文章

  1. html文本标准模式,首行空两格,两端对齐,行高
  2. HTTP状态301、404、200、304分别表示什么意思
  3. (二)java特征
  4. 重学HTML
  5. hdu1232 畅通工程
  6. [SDJX2015]面积
  7. nginx 配置轮询服务
  8. Ruby小例子
  9. javaScript操作select
  10. [SVN]两个分支合并
  11. 通过GIT_COMMIT进行代码回滚
  12. macof python攻击脚本
  13. Reac全家桶笔记
  14. Axis2 服务器端抛出ServiceClass object does not implement问题解决方法
  15. pycharm自动创建python头文件
  16. blfs(systemd版本)学习笔记-wget的安装与配置
  17. Linux用户相关指令
  18. JS基础篇-- body.scrollTop与documentElement.scrollTop
  19. Python基础之字典操作
  20. Luban 鲁班 图片压缩 MD

热门文章

  1. layer弹出层不居中解决方案,仅显示遮罩,没有弹窗
  2. 基于redis集群实现的分布式锁,可用于秒杀商品的库存数量管理,有測试代码(何志雄)
  3. HTTP请求中带有特殊字符&quot;|&quot;,返回400错误
  4. string和int互相转化
  5. java sleep和wait的区别和联系
  6. OO的片段,继承与组合,继承的优点与目的,虚机制在构造函数中不工作
  7. js中字符串函数indexOf与search的区别
  8. maven依赖排除
  9. Hihocoder #1077 : RMQ问题再临-线段树(线段树:结构体建树+更新叶子往上+查询+巧妙使用father[]+线段树数组要开大4倍 *【模板】)
  10. download file by python in google colab