博客
关于我
2018 腾讯校招笔试编程题解答
阅读量:222 次
发布时间:2019-03-01

本文共 662 字,大约阅读时间需要 2 分钟。

为了计算翻转数列的前n项和,我们可以利用数列的结构特性。给定n和m,满足n能被2m整除,数列的符号每隔m个数翻转一次,初始符号为负号。可以发现,数列可以分为k个完整的2m个数的块,其中k = n/(2m)。每个块内的符号模式为:前m个数为负号,后m个数为正号。通过分析每个块的和,我们可以得到总和的计算公式。

推导过程:

  • 块划分:数列被分为k个完整的2m个数的块,其中k = n/(2m)。
  • 块内和
    • 前m个数的和为负数:sum_neg = - (1 + 2 + ... + m) = -m(m + 1)/2。
    • 后m个数的和为正数:sum_pos = (m + 1 + m + 2 + ... + 2m) = m(3m + 1)/2。
  • 总和计算:每个块的和为sum_neg + sum_pos = m²。总和为k * m²。
  • 代入k:k = n/(2m),所以总和 = (n/(2m)) * m² = n*m/2。
  • 结论:前n项的和为n*m/2。

    翻转数列前n项和的计算

    给定整数n和m,满足n能被2m整除。数列的生成规律是每隔m个符号翻转一次,初始符号为'-'。通过分析数列的结构,可以发现数列可以分为k个完整的2m个数的块,其中k = n/(2m)。每个块内的和为m²,总和为k * m²。代入k的表达式,得到总和为n*m/2。

    输入描述:

    输入包括两个整数n和m,满足n能被2m整除。

    输出描述:

    输出一个整数,表示前n项的和。

    示例:

    输入: 8 2,输出: 8

    转载地址:http://ejev.baihongyu.com/

    你可能感兴趣的文章
    PyPI 存储库中的 JarkaStealer:深入解析与防范措施
    查看>>
    Pyplot tutorial,Pyplot官方教程自翻译
    查看>>
    PyQ5学习笔记——使用内部槽函数关闭窗口
    查看>>
    PyQ5学习笔记——使用自定义槽函数关闭窗口
    查看>>
    PyQt MimeData 文件名
    查看>>
    PyQt QML Material Design 按钮背景不会改变
    查看>>
    PyQt QString转成python stirng
    查看>>
    PyQt QToolButton在焦点时不更新图标
    查看>>
    PyQt 正确使用 emit() 和 pyqtSignal()
    查看>>
    PyQT-将文件复制到剪贴板
    查看>>
    PYQT.如何在QTableView中插入小部件
    查看>>
    PyQt4 代码在 PyQt5 (QHeaderView) 上不起作用
    查看>>
    PyQt4 到 PyQt5 ->mainFrame() 已弃用,需要修复才能加载网页
    查看>>
    PyQt4, class:mouseButtons用法
    查看>>
    PyQt4参考文档
    查看>>
    PyTorch Lightning:通过分布式训练扩展深度学习工作流
    查看>>
    PyQt5 - QThread:在线程仍在运行时被销毁
    查看>>
    PyQt5 - 如何从工作线程发出信号以通过 GUI 线程调用事件
    查看>>
    PyQt5 Designer 不工作:此应用程序无法启动,因为无法初始化 Qt 平台插件
    查看>>
    PyQt5 QLCNumber 没有更新
    查看>>