pku2480(欧拉函数的应用,推公式,积性函数)

2023-12-05 23:48

本文主要是介绍pku2480(欧拉函数的应用,推公式,积性函数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://162.105.81.212/JudgeOnline/problem?id=2480

题意:给定N(int)  求 ∑gcd(i,N) 1<=i<=N。

分析:一看这题的数据就知道不能暴力的,要用到欧拉函数分解才行的,只是自己的数论还不成熟,想了好久都没有解法;

最后看了牛人的解题报告才弄明白的;

此题解法:对于gcd(M,N)=i 有Ci个M满足此式 答案便是∑(Ci*i)gcd(M,N)=i  <=> gcd(M/i,N/i)=1 而求gcd(M/i,N/i)=1 有多少个M/i满足 这便是欧拉函数Phi()的定义所以就转化为了求Phi(N/i)枚举每个 M|N  求出Phi(N/i)  答案便是 ∑(Phi(N/i)*i)那么如何枚举每个  M|N 呢?

很简单 枚举1到sqrt(N)的所有整数,所有的约数便是 i|N 和 (N/i)|N。

 

还有别的解法是积性函数,因子分解;

 

(1)因为有性质

 gcd(i,m /times n)=gcd(i,m) /times gcd(i,n) 当m /perp n

所以gcd是积性函数

因为积性函数的和函数也是积性函数(《初等数论及其应用》P182),所以所求函数

F(N)=/sum_{i=1}^{N}gcd(i,N)是积性函数

问题简化到素数阶段,须求F(p^k),此时用到欧拉公式.因为有F(N)=/sum _{d|N}d/cdot /varphi (/frac{N}{d})

(易见因为/varphi (/frac{N}{d})代表的是从1到N中和N最大公约数gcd为d的数的个数)

所以F(p^k)=/sum _{i=0}^k p^i/cdot /varphi (p^{k-i}),又因为/varphi (p^k)=p^k-p^{k-1}则可求出。

(2)

 

容易证明gcd(i,n)是积性函数,即: 如果n = m1*m2 且gcd(i,m1*m2) = gcd(i,m1)*gcd(i,m2). 然后根据具体数学上的结论: 积性函数的和也是积性的,所以如果我们设所求答案是f(n) 则: f(n) = f(m1)*(m2) 其中,m1*m2 = n 且m1,m2互质!经过因子分解,那种只要求到f(p^k)就可以利用积性把所有结果相乘得到最后答案。

还要一个结论: f(n) = sum(p * phi(n/p))  其中p是n的因子,phi(n/p) 是从1到n有多少个数和n的gcd是p,  这个结论比较好证明的。

        所以求f(p^k)转化成求phi(p^i) i =0....k;  而根据公式phi(p^i) = (p-1)*p^(i-1)可以求出,这样整个问题就解决了。  具体算法过程要先把1到50000的素数求出来便于分解因子。

 

 

这篇关于pku2480(欧拉函数的应用,推公式,积性函数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/459612

相关文章

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Python Excel 通用筛选函数的实现

《PythonExcel通用筛选函数的实现》本文主要介绍了PythonExcel通用筛选函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录案例目的示例数据假定数据来源是字典优化:通用CSV数据处理函数使用说明使用示例注意事项案例目的第一