zoukankan      html  css  js  c++  java
  • 求连续正整数的和-Java

    算法训练  连续正整数的和   
    时间限制:1.0s     内存限制:256.0MB
         
    问题描述
      78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27。
      输入一个正整数  n(< =10000)
      输出  m  行(n有m种表示法),每行是两个正整数a,b,表示a+(a+1)+...+b=n。
      对于多种表示法,a小的方案先输出。
    样例输入
    78
    样例输出
    1  12
    18  21
    25  27

    ---------

    设n=78;

    通常的想法是1+2==n?,不是

          1+2+3==n?,不是

          1+2+3+4==?,不是

          .......直到78/2,结束;

    那么100000呢?数越大就越耗时间;

    而换成数组,往每i位==1~i的和,把这些数先填好,再遍历数组中a[i]-ar[i+1]位的差是否等于n即可,等于就输出i,j;

    public static void main(String[] args) {
            Scanner in=new Scanner(System.in);
            int num=in.nextInt();
            int ar[]=new int[num+1];
            for(int i=1;i<=num;i++) {
                ar[i]=ar[i-1]+i;
            }
            for(int j=0;j<num-1;j++) {
                for(int k=j+1;k<=num;k++) {
                    if(ar[k]-ar[j]==num) {
                        System.out.println((j+1) + " " + k);
                    }else if(ar[k]-ar[j]>num) {
                        break;
                    }
                }
            }
        }
  • 相关阅读:
    jmeter 数据库类型的脚本
    jmeter 协议到脚本编写
    python socket粘包
    微信公众号开发
    常用windows和office激活工具
    分辨率等概念
    设置单元格同高或同宽
    单元格内容前或后增加内容
    单元格内数字复制和递增
    excel单元格内容换行
  • 原文地址:https://www.cnblogs.com/RorinL/p/13229150.html
Copyright © 2011-2022 走看看