loj124 除数函数求和 1
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 ;
}
loj124 除数函数求和 1的更多相关文章
- LiberOJ #124. 除数函数求和 【整除分块】
一.题目 #124. 除数函数求和 二.分析 比较好的一题,首先我们要对题目和样例进行分析,明白题目的意思. 由于对于每一个$d$,它所能整除的数其实都是定的,且数量是$ \lfloor \frac{ ...
- LOJ #124. 除数函数求和 1
题目描述 $\sigma_k(n) = \sum_{d | n} d ^ k$ 求 $\sum_{i=1}^n\sigma_k(i)$ 的值对 109 取模的结果. 输入格式 第一行两个正整数 n, ...
- Loj #124. 除数函数求和
链接:https://loj.ac/problem/124 就是筛一下积性函数. #include<bits/stdc++.h> #define ll long long #define ...
- Loj #125. 除数函数求和(2)
link : https://loj.ac/problem/125 分块calc即可. #include<bits/stdc++.h> #define ll long long using ...
- 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*{\ ...
- Java程序:从命令行接收多个数字,求和并输出结果
一.设计思想:由于命令行接收的是字符串类型,因此应先将字符串类型转化为整型或其他字符型,然后利用for循环求和并输出结果 二.程序流程图: 三.源程序代码: //王荣荣 2016/9/23 ...
- Java之递归求和的两张方法
方法一: package com.smbea.demo; public class Student { private int sum = 0; /** * 递归求和 * @param num */ ...
- EXCEL中对1个单元格中多个数字求和
如A1=3779.3759.3769.3781.3750,A2对A1中4个数字求和怎么求!请高手赐教! 方法一:在B1中输入公式=SUM(MID(A1,{1,6,11,16,21},4)*1) 方法二 ...
- codevs 1082 线段树区间求和
codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...
随机推荐
- python -- day 11 考试题
1. 文件t1.txt里面的内容为:(6分) 1,alex,22,13651054608,IT 2,wusir,23,13304320533,Tearcher 3,taibai,18,13332353 ...
- 我遇到的错误curl: (7) Failed to connect to 127.0.0.1 port 1086: Connection refused
今天我用curl命令,无论如何都是出现: curl: (7) Failed to connect to 127.0.0.1 port 1086: Connection refused 找了很久,不知道 ...
- Jetty的JNDI数据源
一. 此处绑定的数据源是以 DBCP 为实现.首先必须将数据库驱动(这里用了MYSQL数据库)和DBCP所需要的 Jar 包复制到 Jetty 根目录的 lib 目录下.DBCP主要需要以下3个文件: ...
- 在无代码文件的aspx文件中添加类、函数和字段的方法
大家都知道,在开始WebForm程序时,一个WebForm由.cs代码文件与.aspx页面文件组成.在aspx文件中可以嵌入C#代码,但无法在aspx的嵌入C#代码中定义类,函数和字段等.这样,就限制 ...
- 如何在 Ubuntu 云服务器上部署自己的 Rails 应用
安装步骤 参考:https://ruby-china.org/topics/32851 在云服务器上安装Ruby|Rails : http://www.cnblogs.com/znsongshu/p ...
- 默认安装centos7 网卡没有启动的问题
CentOS最小化安装的时候,先把net-tools安装上(先把网卡配置好再安装.) #yum install net-tools 登录操作系统 用户名root 密码 123456 输入ip查询命令 ...
- Notepad++文本编辑器 快捷键
Ctrl+C 复制Ctrl+X 剪切Ctrl+V 粘贴Ctrl+Z 撤消Ctrl+Y 恢复Ctrl+A 全选Ctrl+F 键查找对话框启动Ctrl+H 查找/替换对话框Ctrl+D 复制并粘贴当行 C ...
- Ubuntu安装mycli,让mysql命令行可以自动提示
安装mycli 1.确保有安装python 2.确保有安装pip 3.进入su模式,以管理员身份安装 4.安装 pip install -U mycli 5.登录 mycli -u root 很好很强 ...
- set STL 简单说说
set 这个容器,可以排序,以及去掉重复的东西 #include<bits/stdc++.h> using namespace std; int main() { string s; se ...
- OpenCV——PS滤镜算法之 Ellipsoid (凸出)
// define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...