• Happy_2004
    • 题意:
    • 思路(详细解释在扩展):
    • CodeCodeCode:
    • 扩展(因子和,积性函数)
      • nnn的全部因子之和是:
      • 积性函数σ\sigmaσ

Happy_2004

题意:

求2004k2004^k2004k的全部因子的和,对292929取模

思路(详细解释在扩展):

积性函数,等比数列求和

CodeCodeCode:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e3+10;
const int inf = 0x7ffffff;
const int mod = 29;
ll qpow(ll x, ll y) {//快速幂ll ans = 1;while(y) {if(y & 1) ans = ans * x % mod;x = x * x % mod;y >>= 1;}return ans;
}
ll cal(ll p, ll cnt) {//等比数列求和if(cnt == 1) return p+1;if(cnt == 0) return 1;if(cnt % 2) {return cal(p, cnt/2)%mod *(qpow(p, cnt/2+1) + 1ll) % mod;}else {return (cal(p, cnt/2-1)%mod * (qpow(p, cnt/2+1) + 1ll) % mod + qpow(p, cnt/2)) % mod;}
}
int main() {#ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);
#endif  ll n;while(cin >> n, n)cout << cal(2ll, 2*n)*cal(3ll, n) % mod * cal(22ll, n) % mod << endl;return 0;
}

扩展(因子和,积性函数)

nnn的全部因子之和是:

(1+p1+p12...+p1q1)×(1+p2+p22...+p2q2)..×(1+pn+pn2...+pnqn)(1+p_1+p_1^2...+p_1^{q_1})\times(1+p_2+p_2^2...+p_2^{q_2})..\times(1+p_n+p_n^2...+p_n^{q_n})(1+p1​+p12​...+p1q1​​)×(1+p2​+p22​...+p2q2​​)..×(1+pn​+pn2​...+pnqn​​)

=∏i=1n∑j=0pipij=\prod_{i=1}^n\sum_{j=0}^{p_i}p_i^j=∏i=1n​∑j=0pi​​pij​

用分治(一般都会取模)。

举例(首项为1,公比为p,长度5+1):

1+p+p2+p3+p4+p51+p+p2+p3×(1+p+p2)(1+p+p2)×(1+p3)1+p+p^2+p^3+p^4+p^5\\ 1+p+p^2+p^3\times(1+p+p^2)\\ (1+p+p^2)\times(1+p^3)\\ 1+p+p2+p3+p4+p51+p+p2+p3×(1+p+p2)(1+p+p2)×(1+p3)

分治,范围变小

同理:首项为ppp或者其他。

上面的式子可以感性理解一下,对nnn进行质因子分解。对质因子pip_ipi​可以选择[0,qi][0,q_i][0,qi​]次来组成某个因子。

积性函数σ\sigmaσ

σ:σk(n)=∑d∣ndk\sigma:\sigma_k(n)=\sum_{d|n}d^kσ:σk​(n)=∑d∣n​dk 表示n的所有因数的k次方之和(注意不是和的k次方)。证明如下:

需要证明:σk(nm)=σk(n)×σk(m)(k>=0)\sigma_k(nm)=\sigma_k(n)\times\sigma_k(m)~~~(k>=0)σk​(nm)=σk​(n)×σk​(m)   (k>=0)

设集合 N={ai∣1≤i≤k}N=\{a_i|1\leq i \leq k\}N={ai​∣1≤i≤k} 为 n 的所有因子的集合,集合M={bj∣1≤j≤k′}M=\{b_j|1\leq j \leq k'\}M={bj​∣1≤j≤k′}的所有因子的集合。

∵gcd⁡(n,m)=1\because~\gcd(n,m)=1∵ gcd(n,m)=1 ∴gcd(ai,bj)=1\therefore gcd(a_i,b_j)=1∴gcd(ai​,bj​)=1

∴\therefore∴ N与 M的交集为空,即 ∀i,jai≠bj\forall i,j~~~a_i\neq b_j∀i,j   ai​​=bj​

∴\therefore∴将集合N中的元素与集合M中的元素 一 一 相乘,就能得到n×mn\times mn×m的所有因子。

∴σk(nm)=∑i=1k∑j=1k′(ai×bj)k=∑i=1k∑j=1k′aik×bjk\therefore\sigma_k(nm)=\sum_{i=1}^k \sum_{j=1}^{k'} (a_i \times b_j)^k=\sum_{i=1}^k \sum_{j=1}^{k'} a_i^k\times b_j^k∴σk​(nm)=∑i=1k​∑j=1k′​(ai​×bj​)k=∑i=1k​∑j=1k′​aik​×bjk​

∵σk(n)=∑i=1kaik,σk(m)=∑j=1k′bjk\because \sigma_k(n)=\sum_{i=1}^k a_i^k~~,~\sigma_k(m)=\sum_{j=1}^{k'}b_j^k∵σk​(n)=∑i=1k​aik​  , σk​(m)=∑j=1k′​bjk​

∴σk(n)×σk(m)=∑i=1kaik×∑j=1k′bjk=∑i=1k∑j=1k′aik×bjk\therefore \sigma_k(n)\times \sigma_k(m)=\sum_{i=1}^k a_i^k\times \sum_{j=1}^{k'}b_j^k=\sum_{i=1}^k \sum_{j=1}^{k'}a_i^k \times b_j^k∴σk​(n)×σk​(m)=∑i=1k​aik​×∑j=1k′​bjk​=∑i=1k​∑j=1k′​aik​×bjk​

∴σk(nm)=σk(n)×σk(m)\therefore \sigma_k(nm)=\sigma_k(n)\times \sigma_k(m)∴σk​(nm)=σk​(n)×σk​(m)

根据这个积性函数,上面求nnn的全部因子和是kkk等于111的情况。

我们对nnn进行质因子分解,对于一个质因子ppp,设它的次幂为qqq,则它的因子之和就是(1+p+⋯+pq)(1+p+\cdots+p^{q})(1+p+⋯+pq)。

对于nnn的互不相同的质因子,两两互质,就能直接将他们乘起来,得到σ1(n)\sigma_1(n)σ1​(n)的值。

Happy 2004(代码+积性函数扩展)相关推荐

  1. Happy 2004(积性函数、快速幂取模、费马小定理、求因数和)

    happy 2004 题目 积性函数 求因数和 费马小定理 定理 取模 加减法 乘法 除法 结论 推导 快速幂取模 快速幂 快速幂取模 题目代码 坑点 题目 Consider a positive i ...

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

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

  3. HDU-1452 因子和 积性函数性质

    详见代码: #include <cstdio> #include <cstring> #include <cstdlib> #define MOD 29 using ...

  4. 因式分解,算术基本定理,积性函数(POJ 1452 Happy2004)

    积性函数:是指对于所有互质的整数a和b有性质f(ab) = f(a) * f(b) 算术基本定理:任何一个大于1的正整数都能唯一分解为有限个质数的乘积,即N = p1^x1 * p2^x2 * p3^ ...

  5. zcmu2012(积性函数---因子和)

    2012: 因子和 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 38  Solved: 12 [Submit][Status][Web Board] ...

  6. 浅谈积性函数求前缀和

    转载至https://blog.csdn.net/skywalkert/article/details/50500009 前置技能 积性函数的定义 若f(n)f(n)的定义域为正整数域,值域为复数,即 ...

  7. 因子和,因子数,1到n的因子和,1到n的因子数(积性函数)

    1 - 求n的因子和 因子和函数σ定义为整数n的所有正因子之和,记为σ(n)  它是一个积性函数 首先对n进行因子分解 (因子分解代码附后) n = p1^a1 * p2^a2 * ~~~ * px ...

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

    欧拉心算 推式子 ∑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=∑ ...

  9. 2019南昌网络赛G. tsy‘s number(反演 + 积性函数O(n)预处理)

    tsy's number 推式子 ∑i=1n∑j=1n∑k=1nϕ(i)ϕ(j2)ϕ(k3)ϕ(i)ϕ(j)ϕ(k)ϕ(gcd(i,j,k))我们假定j=p1k1p2k2p3p3--pnkn,有ϕ(j ...

最新文章

  1. sql charindex函数
  2. 模板方法(设计一个稳定的父类框架,框架中的有一些步骤是可变的,将可变的步骤子类中来实现)
  3. 四川大学锦江学院计算机专业怎么样,四川大学锦江学院怎么样?是一所什么层次的大学?...
  4. html判断是否有父节点,Jquery判断$(#id)获取的对象是否存在的方法
  5. html xsl xml文件,用XSL显示XML文件看起来像HTML
  6. oracle餐饮权,初秋来临,献上餐饮数字化经营的“暖心大餐”
  7. win8 打开计算机配置,win8.1 更改电脑配置无法使用
  8. childNodes.length 的临时保存
  9. Windows Server 2008官方(MSDN)简体中文正式版试用心得
  10. Kohana - PHP5框架 - 我看过的开源框架
  11. 大学计算机考试59分,大学期末考59分,你会找老师理论吗?很多人都猜错
  12. python中main.py是什么意思_关于python:什么是__main__.py?
  13. 物流管理扫码器识别不了条码怎么办
  14. Python match-search-findall-group(s)的区别
  15. win11修改mac地址的方法
  16. ADXL345实现功能全面的计步器
  17. docker适合初学者吗_简化了Docker:面向绝对初学者的动手指南
  18. 已知等价关系求商集_等价关系习题.docx
  19. 网络流量监控器mrtg全攻略
  20. Sentinel 限流原理

热门文章

  1. 视频推流技术_ai视频流的最新技术进步
  2. 免费好用的IPv6之一个有趣的需求——浅谈Openwrt的VLAN
  3. Https证书制作(转载)
  4. 学生会工作必备计算机知识,必备学生会工作总结范文合集九篇
  5. Android修改user版本默认关闭开发者选项模式,eng版本默认打开开发者选项模式
  6. 北航计算机组成原理课程设计-2021秋 PreProject-MIPS-测试程序设计
  7. 阿里云服务器如何使用并且后续能干嘛
  8. [转]gps中的广义和狭义相对论效应
  9. Delphi Bpl包学习
  10. STC目前所有系列的中断列表