zoukankan      html  css  js  c++  java
  • 刷题_CSDN_正整数的连续的加数序列

    import java.util.Scanner;
    
    /**
     * 题目描述:一个正整数可以表示为n(n>2)个连续正整数之和
     * eg: 15 = 1+2+3+4+5; 15 = 4+5+6; 15 = 7+8
     * 根据输入的任意一个正整数,找出 符合这种要求的所有正整数序列
     * 输入数据: 一个正整数
     * 输出数据: 在标准输出上打印出符合题目描述的全部正整数序列,
     * 每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。
     * 如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。
     * 此外,序列不允许重复,序列内的整数用一个空格分隔。
     * 如果没有符合要求的序列,输出“NONE”
     * 解题思路:采用最简单粗暴的穷举法思想O(n*n),一个正整数i可以表示为n(n>2)个连续正整数之和,
     * 那其中最大整数max不超过i/2+1的大小,所以从1开始,往上求和。找到相等的就打印序列
     * @author Administrator
     *
     */
    public class Test {
        public static void print(int n) {
            int max = 1 + n/2;
            boolean flag = false;
            for(int i = 1; i < max; i++) {
                int cur = i;
                for(int j = i + 1; j <= max; j++) {
                    if(cur < n) {
                        cur += j;
                    }
                    if(cur == n) {
                        flag = true;
                        for(int p = i; p <= j; p++) {
                            System.out.print(p + " ");
                        }
                        System.out.println();
                        break;
                    } else if(cur > n) break;
                }        
            }
            if(flag == false) System.out.println("NONE");
        }
        
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入一个正整数");
            int n = in.nextInt();
            print(n);
        }
    }
  • 相关阅读:
    复利计算- 结对
    《构建之法》第4章读后感
    复利计算--单元测试
    实验一 命令解释程序的编写实验
    Scrum 项目准备4.0
    Scrum 项目准备3.0
    scrum 项目准备2.0
    【操作系统】实验三 进程调度模拟程序
    scrum 项目准备1.0
    Scrum团队成立
  • 原文地址:https://www.cnblogs.com/zzsaf/p/7063708.html
Copyright © 2011-2022 走看看