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;
                    }
                }
            }
        }
  • 相关阅读:
    pyinstaller安装和使用
    django项目结构和运行项目
    安装django and 创建项目
    浅谈网络请求基础(理论篇)
    浅谈爬虫初识
    判断是否AVL平衡二叉书
    用递归方法判断两棵树是否相等
    广度优先搜索求树的深度
    堆排序
    归并排序
  • 原文地址:https://www.cnblogs.com/RorinL/p/13229150.html
Copyright © 2011-2022 走看看