【用连续自然数之和来表达整数】一个整数可以由连续的自然数之和来表示。给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式。

注意!答案仅作为参考(实际考试中下列代码通过用例100%,但不代表最优解)
一个整数可以由连续的自然数之和来表示
给定一个整数
计算该整数有几种连续自然数之和的表达式
并打印出每一种表达式

输入描述
一个目标整数t 1<= t <=1000

输出描述
1.该整数的所有表达式和表达式的个数
如果有多种表达式,自然数个数最少的表达式优先输出
2.每个表达式中按自然数递增输出

具体的格式参见样例
在每个测试数据结束时,输出一行"Result:X"
其中X是最终的表达式个数
输入
9

输出
9=9
9=4+5
9=2+3+4
Result:3

说明 整数9有三种表达方法:

示例二
输入
10
输出
10=10
10=1+2+3+4
Result:2

以上为华为笔试真题,本篇文章不保证代码完全与输出样例相同,只为更易读懂

话不多说,上代码

package com.test.bi;import java.util.Scanner;/*** 【用连续自然数之和来表达整数】一个整数可以由连续的自然数之和来表示。给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式。*/
public class ZiRanShu {public static void main(String[] args) {while (true){//只是做个循环输入方便测试System.out.println("请输入一个整数:");Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();mothd(n);}}public static void mothd(int n){int startNum = 0;int count = 1;System.out.println(n + "=" + n);/*** 研究此题发现实际上是求一个公差为1的等差数列,设首项为x,根据等差数列求和可知sum = (x+(x+(n-1)))*n/2* 可以推导出首项为x = (sum - n*(n-1)/2) / n = (2*sum -n*(n-1)) / 2*n* 由于不知道n具体为几项,则通过循环获取,其中若要n最大时,可考虑首项为1* 即可得到sum >= (1+(1+(n-1)))*n/2* 推导出sum >= n*(n+1)/2 可得出 n*(n+1)<=2*sum*/for (int i = 2; i * (i + 1)<= 2 * n; i++) {//此处变量设置n为要表示的整数,i为项数,根据题目要求可知i最小为两项if((2 * n - i * (i - 1)) % (2 * i) == 0){//求余,若除数为零说明此时的项数i可求得满足条件的首项startNum = (2 * n - i * (i - 1)) / (2 * i);//首项if (startNum>0){//排除可能为负数的情况StringBuilder result = new StringBuilder();for (int j = 0; j < i; j++) {result.append(startNum++).append("+");//先打印再做变量自增}result.deleteCharAt(result.length()-1);System.out.println(n + "=" + result);count++;}}}System.out.println("可用的连续自然数表示方法共有"+count+"种");}
}

用连续自然数之和来表达整数相关推荐

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

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

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

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

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

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

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

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

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

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

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

    目录 题目描述 输入描述 输出描述 参考示例 参考代码 机试介绍 写在最后

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

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

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

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

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

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

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

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

最新文章

  1. 你写的ML代码占多少内存?这件事很重要,但很多人还不懂
  2. python爬虫如何配置动态爬虫代理
  3. SQLite中的运算符表达式
  4. 英特尔CFO:裁员为加速转型 是艰难但正确的决定
  5. 生产环境中配置的samba
  6. 网易云信携手小天才Z6手表,让安全“看得见”
  7. mysql+server+80_Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL环境搭建教程
  8. GitBlit使用安装教程~
  9. db2与mysql语法区别,db2和mysql语法分析异同点
  10. 五眼网络安全机构联合发布事件响应指南
  11. 生活随笔: 毕业之前和毕业之后
  12. reportmachine中怎样实现“数据注脚footer1”里面的内容在每页显示
  13. 计算机科学导论课后总结_1
  14. ——黑马程序员——OC中Foundation下NSFileManager的使用
  15. 使用NLTK实现stemming
  16. android 通知写法_android清除通知栏消息的代码
  17. 电压跌落故障Matlab,基于MATLAB的电压跌落建模仿真分析探究.pdf
  18. 分享一个国内可用的ChatGPT网站,免费无限制,支持AI绘画 - AI 百晓生
  19. windows连接的蓝牙设备(如小爱同学),无法调节音量
  20. 英语说话方式的一点儿心得

热门文章

  1. python入门指南by许半仙-《江火欲燃山》《这题超纲了》《Python入门指南》
  2. 联合国可持续发展目标,中国大数据服务支持
  3. Uniapp Android原生插件开发
  4. word中的表格复制到html代码,怎样将Word中的表格复制到Excel中还保持原有内容和格式?...
  5. 如何用计算机算分数乘法,分数乘法怎么算
  6. python将图片合并到PDF
  7. msm8953 PWM背光
  8. micropython控制舵机_玩转micro:bit-用BXY控制小舵机、360舵机和带驱动N20电机
  9. 腾讯会议 .wemta 文件如何转码成 mp4 文件
  10. java源码app,飞飞CMS双端JAVA原生APP源码