facsum

10.20

思路:
对于式子进行分析,前面的Phi就是一个很常规的转化,变成i^m。后边一个约数个数,一个Mobius,一个单位函数都是积性函数,所以卷起来也就积性啦(不是积性怎么做嘛。。)
于是就上线性筛了。
对于 if(i % prime[j] == 0) 的情况,也就是 f[p^k*c] = f[p^k] * f[c]。
所以我们只用考虑 f[p^k] 如何计算,d就是p^i,当 (i <= k-2) 是,n/d 中就会有多个p,那么mu自然就是0了,不必计算。
所以 f[p^k] = p^k^m * (g[p^k] * mu[1] * 1 + g[p^(k-1)] * mu[p] * p) = p^k^m * (k + 1 + k * (-p))
= p^k^m * (k - kp + 1)。结束
话说打表找规律也不失为一种很好的方法。

ps:空间限定比较严,那些又开mu又开phi什么的就只有唱歌啦啦啦。

#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL long long
#define N 10000010
#define MOD 1000000007
using namespace std;int n,m;
int prime[N/10], t[N], tot=0;
bool isnot[N];
LL f[N];int fpow(int a, int b, int p) {int ret = 1;while( b ) {if(b & 1) ret = 1ll * ret * a % p;a = 1ll * a * a % p, b >>= 1;}return ret;
}int ffp(int a, int b) {int ret = 1;while( b ) {if(b & 1) ret = ret * a;a = a * a, b >>= 1;}return ret;
}void linear_shaker() {memset(isnot, 0, sizeof(isnot));f[1] = 1, t[1] = 0;for(register int i=2; i<N; ++i) {if( !isnot[i] ) prime[++tot] = i, f[i] = 2-i, t[i] = 1;for(int j=1; j<=tot && i*prime[j]<N; ++j) {int k = i * prime[j];isnot[k] = 1;if(i % prime[j] == 0){t[k] = t[i] + 1;f[k] = 1ll * f[k/ffp(prime[j], t[k])] * (t[k]+1-t[k]*prime[j]) % MOD;break;}t[k] = 1;f[k] = f[i] * f[prime[j]] % MOD;}}
}int main() {freopen("facsum.in", "r", stdin);freopen("facsum.out", "w", stdout);scanf("%d%d", &n, &m);linear_shaker();int ans = 0;for(int i=1; i<=n; ++i){ans = (ans + 1ll * fpow(i, m, MOD) * f[i] % MOD) % MOD; }printf("%d\n", (ans + MOD) % MOD);return 0;
}

facsum (线性筛 积性函数)相关推荐

  1. 线性筛求积性函数的模板

    ACM常用模板合集 void sieve() {tot = 1;memset(vis, 0, sizeof(vis));low[1] = 1;G[1] = 函数G(n) n=1时的定义for (int ...

  2. 积性函数的性质及证明 + 线性筛

    引言 在数论问题中,积性函数有着广泛的应用. 如在莫比乌斯反演问题中,函数变换之后如何快速维护前缀和往往是最重要也是最难的一步.如果维护的函数具有积性,那就可以尝试利用线性筛在O(n)O(n)O(n) ...

  3. 线性筛及其扩展-积性函数

    线性筛 埃氏筛 对于每个数\(x\),枚举其倍数,将\(kx\)筛去. 在埃氏筛过程中,每个数都会被筛掉多次,且对于每个数x,枚举其倍数的次数为\(\frac{n}{x}\) 故埃氏筛的时间复杂度为\ ...

  4. ACM-ICPC 2018 南京赛区网络预赛Sum,线性筛处理积性函数

    SUM 题意:f(n)是n可以拆成多少组n=a*b,a和b都是不包含平方因子的方案数目,对于a!=b,n=a*b和n=b*a算两种方案,求∑i=1nf(i) 首先我们可以知道,n=1时f(1)=1, ...

  5. P6222 「P6156 简单题」(反演 + 积性函数线性筛)

    P6156 简单题 推式子 ∑i=1n∑j=1n(i+j)kf(gcd(i,j))gcd(i,j)=∑i=1n∑j=1n(i+j)kμ2(gcd(i,j))gcd(i,j)=∑d=1nμ2(d)dk+ ...

  6. 杜教筛(上):整除分块,积性函数,欧拉与莫比乌斯

    整除分块: 当我们求∑i=1nf(⌊ni⌋)\sum_{i=1}^nf(\lfloor\frac{n}{i}\rfloor)∑i=1n​f(⌊in​⌋)的时候,如果1到n求一遍感觉太傻了,因为会有很多 ...

  7. 欧拉心算(反演 + 积性函数筛)

    欧拉心算 推式子 ∑i=1n∑j=1nϕ(gcd(i,j))=∑d=1nϕ(d)∑i=1nd∑j=1nd[gcd(i,j)==1]=∑d=1nϕ(d)∑k=1ndμ(k)(⌊nkd⌋)2另t=kd=∑ ...

  8. 牛客 华华给月月出题 (积性函数+欧拉筛+快速幂)

    题目描述 华华刚刚帮月月完成了作业.为了展示自己的学习水平之高超,华华还给月月出了一道类似的题: ⊕符号表示异或和,详见样例解释. 虽然月月写了个程序暴力的算出了答案,但是为了确保自己的答案没有错,希 ...

  9. 读贾志鹏线性筛有感 (莫比乌斯函数的应用)

    先拜大牛.感谢贾志鹏严谨的思维.以及简单清晰的论文描述. 一定要结合论文看.我只是提出我觉得关键的部分.论文在网上随处可见.贾志鹏线性筛. 开头两种线性筛的比较. 一种是传统的线性筛.时间复杂度为N* ...

最新文章

  1. 安装Grid Control
  2. RS485,RS232,USB,Ethernet 传输速度分别是多少
  3. GPS实时跟踪程序模拟(2)动画回放
  4. 洛谷 2758 编辑距离
  5. python 识别验证码
  6. oracle备份 ram,Oracle备份时出现AIX系统的3D32B80D错误
  7. autojs调用java识字_autojs实现抽象类的继承
  8. expect java_expect命令
  9. Android学习笔记09:Paint及Canvas的简单应用
  10. arcgis水文分析_值得收藏!用DEM做水文分析前,你还需要储备的知识
  11. 获取图像像素点的概率分布图
  12. offer拿到手软,java分布式面试题及答案
  13. 计算机视觉的一些测试数据集和源码站点
  14. 笔记本win10更新无线服务器,win10笔记本无线驱动升级安装图文详解
  15. python绘制四叶草_python绘图四叶草
  16. KVM基于Web部署虚拟主机
  17. Linux如何配置ssh key
  18. 搭建spring-boot+vue前后端分离框架并实现登录功能
  19. MySQL批量导入Excel、txt数据
  20. linux解决bash: nc: command not found 安装nc、telnet、yum

热门文章

  1. 商业智能中的决策, 数据和数据处理方法
  2. UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射)
  3. BAT后台开发 两年工作经历总结
  4. jtag、在线仿真器
  5. 五:.net core(.NET 6)使用Autofac实现依赖注入
  6. 一招教你快速取消Mac系统开机密码的方法
  7. 深刻揭露步态识别的“谎言”(篇二:深度学习乱拳打进来)
  8. P2P网络中的节点发现
  9. 线性代数笔记3.3向量组的秩
  10. Redis入门指南:深入了解这款高性能缓存数据库