翻转数列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 相关文章推荐
布同 统计英文单词的个数的python代码
Mar 13 Python
python读写文件操作示例程序
Dec 02 Python
python使用多线程不断刷新网页的方法
Mar 31 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
python 根据pid杀死相应进程的方法
Jan 16 Python
python向字符串中添加元素的实例方法
Jun 28 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
python-xpath获取html文档的部分内容
Mar 06 Python
python对execl 处理操作代码
Jun 22 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 Python
python获取字符串中的email
Mar 31 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
php生成缩略图的类代码
2008/10/02 PHP
php 无法载入mysql扩展
2010/03/12 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
php fread函数使用方法总结
2019/05/28 PHP
一行代码告别document.getElementById
2012/06/01 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
js实现动态显示时间效果
2017/03/06 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
python实现的希尔排序算法实例
2015/07/01 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
使用python实现ANN
2017/12/20 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
初中学校对照检查材料
2014/08/19 职场文书
实习协议书范本
2014/09/25 职场文书
2014办公室年度工作总结
2014/12/09 职场文书
会计试用期自我评价
2015/03/10 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python
用JS创建一个录屏功能
2021/11/11 Javascript
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL