def find_combinations(num):n = int(num ** 0.5)  # 这里直接开根号,缩小循环范围res = [] # 前可以转化成中间项的倍数,所以下面for循环求得是中间项的值for i in range(2, n + 1):if num % i == 0:mid_01 = i  # 中间数mid_02 = int(num / i)  # 项数# 分解出来为mid_01*mid_02的形式,if mid_02 % 2 == 1:  # mid_02为奇数first_1 = (mid_01 - mid_02 // 2)last_1 = (mid_01 + mid_02 // 2)if first_1 >= 0:res.append('+'.join([str(j) for j in range(first_1, last_1 + 1) if j > 0]))else:  # mid_02 为偶数,拆分mid_01 比如:125拆成62+63if mid_01 % 2 == 1:t_01 = int((mid_01 - 1) / 2)t_02 = int((mid_01 + 1) / 2)if t_01 - mid_02 >= 0:lists_01 = [str(i) for i in range(t_01 - mid_02 + 1, t_01 + 1) if i > 0]lists_02 = [str(i) for i in range(t_02, t_02 + mid_02) if i > 0]res.append('+'.join(lists_01 + lists_02))# 此处仅仅将上面的mid_01*mid_02 调换成mid_02*mid_01 中间值和项数对调if mid_01 % 2 == 1:first_2 = (mid_02 - mid_01 // 2)last_2 = (mid_02 + mid_01 // 2)if first_2 >= 0:res.append('+'.join([str(j) for j in range(first_2, last_2 + 1) if j > 0]))else:  # mid_02 为偶数,拆分mid_01:125拆成62+63if mid_02 % 2 == 1:t_01 = int((mid_02 - 1) / 2)t_02 = int((mid_02 + 1) / 2)if t_01 - mid_01 >= 0:lists_01 = [str(i) for i in range(t_01 - mid_01 + 1, t_01 + 1) if i > 0]lists_02 = [str(i) for i in range(t_02, t_02 + mid_01) if i > 0]res.append('+'.join(lists_01 + lists_02))# 上面要防止第一项等于0# 奇数特殊解if num % 2 == 1:mid = int((num + 1) / 2)res.append('+'.join([str(mid - 1), str(mid)]))res.append(str(num))if res:return reselse:return [None]# test
print(find_combinations(63))

求n个连续自然数之和为一个非负整数的数组相关推荐

  1. 一个整数拆分为连续自然数之和

    问题描述:将一个正整数,拆分成连续的自然数之和,输出所有可能的情况 例如: 3 = 1+2 10 = 1+2+3+4 16 = 5+6+7 ... 问题求解: 连续的自然数之和让我们想到了等差数列求和 ...

  2. 整数拆分为连续自然数之和

    闲得蛋疼: 连续自然数之和可以利用等差数列求和公式求得: , N=n*a+n*(n-1)/2: 其中N为需要拆分的整数,n为拆分后连续自然数个数,a为连续自然数中第一位数,比如: 36=11+12+1 ...

  3. 【华为OD机试真题 JAVA】用连续自然数之和来表达整数

    JS版:[华为OD机试真题 JS]用连续自然数之和来表达整数 标题:用连续自然数之和来表达整数 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 一个整数可以由连续的自然数之和来表 ...

  4. 华为OD机试 - 用连续自然数之和来表达整数(Java JS Python)

    题目描述 一个整数可以由连续的自然数之和来表示. 给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式 输入描述 一个目标整数T (1 <=T<= 1000) 输出描述 ...

  5. 【华为OD机试真题 JS】用连续自然数之和来表达整数

    标题:用连续自然数之和来表达整数 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 一个整数可以由连续的自然数之和来表示.给定一个整数,计算该整数有几种连续自然数之和的表达式,且打 ...

  6. 华为od统一考试B卷【用连续自然数之和来表达整数】C++ 实现

              所有题目均有五种语言实现.C实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录 题目 一个整数可以由连续的自然数之和来表示. 给定一个 ...

  7. 【用连续自然数之和来表达整数】

    ■ 题目描述 [用连续自然数之和来表达整数] 一个整数可以由连续的自然数之和来表示. 给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式. 输入描述 一个目标整数T (1 < ...

  8. 华为OD机试题:整数表达为连续自然数之和

    题目描述: 一个整数可以由连续的自然数之和来表示,给定一个整数,计算该整数有几种连续自然数之和的表达式,并打印出每一种表达式. 输入描述: 一个目标整数t 1<= t <=1000 输出描 ...

  9. HUAWEI 机试题:整数表达为连续自然数之和(Python解法)

    题目描述: 一个整数可以由连续的自然数之和来表示,给定一个整数,计算该整数有几种连续自然数之和的表达式,并打印出每一种表达式. 输入描述: 一个目标整数t 1<= t <=1000 输出描 ...

  10. 正整数分解为几个连续自然数之和

    题目:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列. 一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 ...

最新文章

  1. JVM---直接内存
  2. 华为海思总裁致员工信:不再有换胎机会,必当科技自立!
  3. NodeJs 的几种文件路径
  4. 简单几步解决企业USB端口隐患
  5. 甲骨文:正在从SAP手中赢得应用产品市场份额
  6. 3. golang 流程控制
  7. JavaScript基础之Number对象和Math对象
  8. python import 路径设置
  9. php srem,SREM命令_视频讲解_用法示例-redis编程词典-php中文网
  10. 实现 Bootstrap 基本布局
  11. power bi报表服务器_如何将Power BI Report Server报表嵌入ASP.Net Web应用程序
  12. 「12」你们啊,naive!——朴素贝叶斯谈笑录
  13. Atitit.每周末总结 于每周一计划日程表 流程表 v8 -------------import 上周遗漏日志补充 检查话费 检查流量情况 Crm问候 Crm表total and 问候
  14. Vivado 2019.1下载与安装
  15. 计算机二级access宝典app,二级Access考试宝典
  16. 全国基础地理数据库数据预处理
  17. JAVA数据聚合服务_Spring Cloud 跨服务数据聚合小框架
  18. libdmtx结合OpenCV识别DataMatrix二维码
  19. 青光眼 程序员_青光眼-如何不失明:让我们谈谈治疗方法…
  20. java ps old gen_PSYoungGen /PSOldGen/PSPermGen区别

热门文章

  1. const 与readonly的异同
  2. android DVM
  3. Oracle的exp导出、imp导入数据命令
  4. mongodb 查多个不等于_MongoDB增删查
  5. api 原生hbase_HBase实践 | BDSHBase数据迁移同步方案的设计与实践
  6. iterator接口
  7. 用c 语言写21点游戏,求一c语言程序 :21点游戏代码
  8. c 创建mysql实体模型_ADO.Net实体数据模型添加DB-First/Code First报错
  9. StanfordDB class自学笔记 (16) 心得体会
  10. python面向对象基础知识_面向对象的一些基本知识(python)