Happy 2004(代码+积性函数扩展)
- 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=0pipij
用分治(一般都会取模)。
举例(首项为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∣ndk 表示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=1kaik , σ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=1kaik×∑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(代码+积性函数扩展)相关推荐
- Happy 2004(积性函数、快速幂取模、费马小定理、求因数和)
happy 2004 题目 积性函数 求因数和 费马小定理 定理 取模 加减法 乘法 除法 结论 推导 快速幂取模 快速幂 快速幂取模 题目代码 坑点 题目 Consider a positive i ...
- 线性筛及其扩展-积性函数
线性筛 埃氏筛 对于每个数\(x\),枚举其倍数,将\(kx\)筛去. 在埃氏筛过程中,每个数都会被筛掉多次,且对于每个数x,枚举其倍数的次数为\(\frac{n}{x}\) 故埃氏筛的时间复杂度为\ ...
- HDU-1452 因子和 积性函数性质
详见代码: #include <cstdio> #include <cstring> #include <cstdlib> #define MOD 29 using ...
- 因式分解,算术基本定理,积性函数(POJ 1452 Happy2004)
积性函数:是指对于所有互质的整数a和b有性质f(ab) = f(a) * f(b) 算术基本定理:任何一个大于1的正整数都能唯一分解为有限个质数的乘积,即N = p1^x1 * p2^x2 * p3^ ...
- zcmu2012(积性函数---因子和)
2012: 因子和 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 38 Solved: 12 [Submit][Status][Web Board] ...
- 浅谈积性函数求前缀和
转载至https://blog.csdn.net/skywalkert/article/details/50500009 前置技能 积性函数的定义 若f(n)f(n)的定义域为正整数域,值域为复数,即 ...
- 因子和,因子数,1到n的因子和,1到n的因子数(积性函数)
1 - 求n的因子和 因子和函数σ定义为整数n的所有正因子之和,记为σ(n) 它是一个积性函数 首先对n进行因子分解 (因子分解代码附后) n = p1^a1 * p2^a2 * ~~~ * px ...
- 欧拉心算(反演 + 积性函数筛)
欧拉心算 推式子 ∑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=∑ ...
- 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 ...
最新文章
- sql charindex函数
- 模板方法(设计一个稳定的父类框架,框架中的有一些步骤是可变的,将可变的步骤子类中来实现)
- 四川大学锦江学院计算机专业怎么样,四川大学锦江学院怎么样?是一所什么层次的大学?...
- html判断是否有父节点,Jquery判断$(#id)获取的对象是否存在的方法
- html xsl xml文件,用XSL显示XML文件看起来像HTML
- oracle餐饮权,初秋来临,献上餐饮数字化经营的“暖心大餐”
- win8 打开计算机配置,win8.1 更改电脑配置无法使用
- childNodes.length 的临时保存
- Windows Server 2008官方(MSDN)简体中文正式版试用心得
- Kohana - PHP5框架 - 我看过的开源框架
- 大学计算机考试59分,大学期末考59分,你会找老师理论吗?很多人都猜错
- python中main.py是什么意思_关于python:什么是__main__.py?
- 物流管理扫码器识别不了条码怎么办
- Python match-search-findall-group(s)的区别
- win11修改mac地址的方法
- ADXL345实现功能全面的计步器
- docker适合初学者吗_简化了Docker:面向绝对初学者的动手指南
- 已知等价关系求商集_等价关系习题.docx
- 网络流量监控器mrtg全攻略
- Sentinel 限流原理