翻转数列python实现,求前n项和,并能输出整个数列的案例


Posted in Python onMay 03, 2020

这是刷题时遇到的一道题,题目描述:小Q定义了一种数列称为翻转数列:

给定整数n和m, 满足n能被2m整除。对于一串连续递增整数数列1, 2, 3, 4..., 每隔m个符号翻转一次, 最初符号为'-';。

例如n = 8, m = 2, 数列就是: -1, -2, +3, +4, -5, -6, +7, +8.

而n = 4, m = 1, 数列就是: -1, +2, -3, + 4.

小Q现在希望你能帮他算算前n项和为多少。

如果只需求出N项和的话,这里可以有一个简便思路,观察规律哈,比如n = 8, m = 2, 数列就是: -1, -2, +3, +4, -5, -6, +7, +8.时,

思路1:

对于一次翻转前后的两个子数组, -1, -2, 和+3, +4,+3和-1的和为2,+4和-2的和为2,总和为4,同理对后面的两个子数组求和也是4,也就是说,前后两个不同符号的子数组的和刚好是M*M,那么这样的数组有多少呢,有N/2M次,所以和为M*N/2

思路2:

对于相隔m个的两个数字数字的正好为M,这样的数字对有N/2个,所以和就为M*N/2啦~~~~是不是so easy呀

好了,python实现如下,这个是把数列输出,然后再求和,另外思路2在里面有体现哦

def isInput(m,n):
  c=n/m
  d=c%2
  if d==0:
   return True
  else:
   return False
def s(m,n):
  t=int(n/m)
  an=[]
  ai=0
  for turntime in range(1,t+1):#turntime是翻转次数
   for sublen in range(0,m):#sublen是相同符号的子序列长度
     ai=ai+1
     tt=turntime%2
     if tt==0:
      an.append(ai)
     else:
      ci=ai*(-1)
      an.append(ci)
  print(an)
  print(sum(an))
  test=[]
  for a in an:
   if a<0:
     test.append(a)
  x=len(test)
  print(m*x)#这里可以直接计算出结果
m=int(input("请输入M:"))
n=int(input('请输入N:'))

if isInput(m,n)==False:
  print('输入不合法')
else:
  s(m,n)

翻转数列python实现,求前n项和,并能输出整个数列的案例

补充知识:Python Fibonacci-无穷数列 求第n项及前n项和

Fibonacci数列,又称无穷列表,前n项和为:1,1,2,3,5,8,13,21,34,55…

他可以递归地定义为:

翻转数列python实现,求前n项和,并能输出整个数列的案例

这是一个递归关系,当n大于1时,这个数列的第n项和是前两项之和。利用递归算法可以很简单地解出其解以及前n项和。

# 分段函数 F(n)= {1 n=0; 1 n=1; F(n-1)+F(-2)  n>1}
def backValue(n):
  if n<=1:
    return 1
  return backValue(n-1)+backValue(n-2)

n = int(input("输入一个大于 0 的正整数:"))
value = [i for i in range(n)]
Fbc_list = []
for i in value:
  s = backValue(i)
  Fbc_list.append(s)

print("第%s的数为:"%n,Fbc_list[-1],"\n无穷列表为:",Fbc_list,"\n前%s项和为:"%n,sum(Fbc_list))

以上这篇翻转数列python实现,求前n项和,并能输出整个数列的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Linux环境下MySQL-python安装过程分享
Feb 02 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
python基于FTP实现文件传输相关功能代码实例
Sep 28 Python
Python 项目转化为so文件实例
Dec 23 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
Jun 09 Python
自学python用什么系统好
Jun 23 Python
Python如何在单元测试中给对象打补丁
Aug 03 Python
python一些性能分析的技巧
Aug 30 Python
Python内置函数property()如何使用
Sep 01 Python
python通配符之glob模块的使用详解
Apr 24 Python
Python字典的基础操作
Nov 01 Python
Python定义函数实现累计求和操作
May 03 #Python
Python实现汇率转换操作
May 03 #Python
Python定时从Mysql提取数据存入Redis的实现
May 03 #Python
python函数调用,循环,列表复制实例
May 03 #Python
python轮询机制控制led实例
May 03 #Python
python 轮询执行某函数的2种方式
May 03 #Python
在Sublime Editor中配置Python环境的详细教程
May 03 #Python
You might like
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
PHP 采集程序 常用函数
2008/12/18 PHP
php array的学习笔记
2012/05/16 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
在网页里看flash的trace数据的js类
2009/01/10 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
2011/11/14 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
javascript实现禁止复制网页内容
2014/12/16 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
Python获取当前时间的方法
2014/01/14 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
python实现二叉树的遍历
2017/12/11 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
新闻编辑自荐信
2013/11/03 职场文书
英语自荐信常用语句
2013/12/13 职场文书
个人合伙协议书范本
2014/10/14 职场文书
2014年工程师工作总结
2014/11/25 职场文书
2015年大学生实习评语
2015/03/25 职场文书
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python